2014-10-03 48 views
0

我想創建controller_action_predispatch事件:Magento的:controller_action_predispatch不工作

這是我兆字節/ Pushnotification的/ etc/config.xml文件中的代碼

<events> 
      <controller_action_predispatch_mbyte_pushnotification_index_index> 
       <observers> 
        <Mbyte_Pushnotification> 

         <class>Mbyte_Pushnotification/Observer</class> 
         <method>indexPreDispatch</method> 
        </Mbyte_Pushnotification> 
       </observers> 
      </controller_action_predispatch_mbyte_pushnotification_index_index> 
    </events> 

我的控制器代碼:字節/ Pushnotification /控制器/ IndexController.php文件代碼

class Mbyte_Pushnotification_IndexController extends Mage_Core_Controller_Front_Action 
{ 

    public function indexAction() 
    { 
    Mage::log('Run',null,'log.log'); 

    } 
    } 

觀察文件的代碼:

class Mbyte_Pushnotification_Model_Observer { 
       public function indexPreDispatch($observer) 
       {  
       Mage::log('Check',null,'observer.log'); 

         }} 

controller_action_predispatch不起作用。 有什麼我做錯了嗎?

+0

它不會糾正你的錯誤,但投出您$觀察者像'公共職能indexPreDispatch(Varien_Event_Observer $觀察員)' – apouey 2014-10-03 08:08:07

+0

我試過這個,但沒有爲我工作 – 2014-10-03 09:15:09

回答

0

事件觸發應該是

controller_action_predispatch_pushnotification_index_index 代替 controller_action_predispatch_mbyte_pushnotification_index_index

的情況下,你沒有修改控制器的前端名稱( 「pushnotification」)。

因此,你需要更新你的config.xml中

<events> 
     <controller_action_predispatch_pushnotification_index_index> 
      <observers> 
       <Mbyte_Pushnotification> 
        <class>Mbyte_Pushnotification_Model_Observer</class> 
        <method>indexPreDispatch</method> 
       </Mbyte_Pushnotification> 
      </observers> 
     </controller_action_predispatch_pushnotification_index_index> 
</events> 

你也可以寫

<events> 
     <controller_action_predispatch_pushnotification_index_index> 
      <observers> 
       <Mbyte_Pushnotification> 
        <class>pushnotification/observer</class> 
        <method>indexPreDispatch</method> 
       </Mbyte_Pushnotification> 
      </observers> 
     </controller_action_predispatch_pushnotification_index_index> 
</events> 

,如果你命名了模塊 「pushnotification」,我以爲。

0

據Magento的定義事件取決於應該

controller_action_predispatch_frontName_Controller_Youaction 

它定義如下:

Mage::dispatchEvent('controller_action_predispatch_' . $this->getFullActionName(), 
     array('controller_action' => $this)); 
+0

我試過這個,但是這對我沒有用。你能用例子來解釋嗎? – 2014-10-03 09:51:47