2015-01-31 3 views
0

저는 맞춤 모듈을 만들었습니다. 컨트롤러를 호출 할 때 관찰자가 기능을 확장하기를 원합니다. 내 컨트롤러 인 가정 : -자홍색으로 관찰자를 만드는 방법

<?php 
    class Test_Mod_IndexController extends Mage_Core_Controller_Front_Action 
    { 
     public function saveAction() 
    { 
      // code 
    $dataval = $this->getRequest()->getParams(); 
    Mage::dispatchEvent('my_custom_event', $dataval); 
     } 
    } 
여기

입니다 설정 파일 : - 여기

<?xml version="1.0"?> 
<config> 
    <modules> 
    <Myobs_Obser> 
     <version>0.1.0</version> 
    </Myobs_Obser> 
    </modules> 
    <global> 
     <models> 
      <obser> 
      <class>Myobs_Obser_Model</class> 
      </obser> 
     </models> 
    </global> 
<frontend> 
    <events> 
     <my_custom_event> 
      <observers> 
       <Myobs_Obser_my_custom_event_observer> 
        <type>singleton</type> 
        <class>obser/observer</class> 
        <method>my_custom_method</method> 
       </Myobs_Obser_my_custom_event_observer> 
      </observers> 
     </my_custom_event> 
    </events> 
</frontend> 
</config> 

입니다 관찰자 : - 그것은 작동하지 않습니다

<?php 
class Myobs_Obser_Model_Observer 
{ 
public function my_custom_method($observer) 
    {  
     $event = $observer->getEvent(); 
         var_dump($event); 
     die; 
     } 
} 
?> 

저를 도와주세요. 감사합니다. .

+0

http://code.tutsplus.com/tutorials/understanding-magento-observers--cms-21031 –

답변

0

업데이트 다음과 컨트롤러 :

<?php 
class Test_Mod_IndexController extends Mage_Core_Controller_Front_Action 
{ 
    public function saveAction() 
{ 
    //creating your own dispatch event 
Mage::dispatchEvent(
      'mod_submit_before', 
      array('key' => 'value')//parameters to access using observer object in event function parameter 
     ); 

     // code 
    } 
} 
+0

배열로 전달해야 할 내용을 알려주시겠습니까? 당신은 배열 배열 ('키'=> 'myformdata') 내 양식 데이터를 전달해야 의미. – user3932271

+0

참조하십시오 : $ 데이터 = $ this-> getRequest() -> getParams(); array ('formdata'=> $ data)와 같은 dispatchEvent 배열에서이를 전달합니다. 당신의 관측기 함수 내에서 observerformsubmit을 말하면 다음과 같이 될 것입니다 : public function observerformsubmit ($ observer) {$ formDataSubmitted = $ observer-> getEvent() -> getFormdata();} –

+0

안녕하세요 @Blastfreak가 작동하지 않습니다. 모든 코드를 확인하십시오 – user3932271

0

확인 구성 항목 :

<global> 
    .. 
    .. 
    <events> 
    <my_custom_event> 
     <observers> 
     <namespace_modulename_my_custom_event_observer> 
      <type>singleton</type> 
      <class>modulename/observer</class> 
      <method>my_custom_method</method> 
     </namespace_modulename_my_custom_event_observer> 
     </observers> 
    </my_custom_event> 
    </events> 
    .. 
    .. 
</global> 

지금 모델 내부 observer.php 쓰기 :

<?php 
class Namespace_Modulename_Model_Observer 
{ 
    public function my_custom_method($observer) { 
    $event = $observer->getEvent(); 

    // getter method to fetch cid value passed from the dispatcher 
    $cid = $event->getCid(); 
    echo $cid; 
    exit; 
    } 
} 
?> 

를 이제 내부 사용자 정의 이벤트를 호출 귀하의 컨트롤러 :

,210
<?php 
.. 
$event_data_array = array('cid' => '123'); 
Mage::dispatchEvent('my_custom_event', $event_data_array); 
.. 
?> 
+0

안녕하세요. @Vertika Srivastava 작동하지 않습니다. 모든 코드를 게시하십시오. – user3932271

0

난 당신이 수정해야 할 수있는 다음과 같은 영역이 있습니다 Config.xml의 이벤트 노드가 내부에 와야 귀하의

2

1) Updated Function : 

    <?php 
     class Test_Mod_IndexController extends Mage_Core_Controller_Front_Action 
     { 
      public function saveAction() 
     { 
       // code 
     $dataval = $this->getRequest()->getParams(); 
// I have changed the 2nd parameter below as a key value pair, you can access the data using reference key "formdata" in your observer function 
     Mage::dispatchEvent('my_custom_event', array('formdata' => $dataval)); 
      } 
     } 
)는, 아래에 업데이트 config.xml에 있습니다

<?xml version="1.0"?> 
<config> 
    <modules> 
    <Myobs_Obser> 
     <version>0.1.0</version> 
    </Myobs_Obser> 
    </modules> 
    <global> 
     <models> 
      <obser> 
      <class>Myobs_Obser_Model</class> 
      </obser> 
     </models> 
     <events> 
     <my_custom_event> 
      <observers> 
       <obser> 
        <type>model</type> 
        <class>obser/observer</class> 
        <method>mycustommethod</method><!--Avoiding Undescores in methode name--> 
       </obser> 
      </observers> 
     </my_custom_event> 
    </events> 
    </global> 
</config> 

<?php 
class Myobs_Obser_Model_Observer 
{ 
public function mycustommethod($observer) 
    {  
     $event = $observer->getEvent(); 
         var_dump($event); 
     die; 
     } 
} 
?> 

4) 마지막으로 중요한 것은 임대, m : 아래 관찰자 기능에

3) 그리고 업데이트 파일 사용 권한이 적절한 지 확인하십시오. :) 문제가있을 경우 알려주십시오.

+0

큰 노력에 감사드립니다. 하지만 여전히 작동하지 않습니다 – user3932271

+0

u는 이메일 주소를 나에게 줄 수 있습니까? –

+0

안녕 내 이메일 ID입니다 : - [email protected] – user3932271

관련 문제