是的,你可以在動態事件監聽:
controller_action_predispatch_' . $this->getFullActionName()
或
controller_action_postdispatch_' . $this->getFullActionName()
您可以找到這些事件的派遣app/code/core/Mage/Core/Controller/Varien/Action.php
$this->getFullActionName()
返回由形成一個字符串的方法routeName_controllerName_actionName
因此,假設你的routeName是myadminroute
,你的controllerName是mycontroller
和你的行動是admin
(如您的代碼),你可以聽的事件:
controller_action_predispatch_myadminroute_mycontroller_admin
和
controller_action_postdispatch_myadminroute_mycontroller_admin
如果你是在管理方面,你可以聽上:
controller_action_predispatch_adminhtml_myadminroute_mycontroller_admin
和
controller_action_postdispatch_adminhtml_myadminroute_mycontroller_admin
在您的觀察者類中,您可以檢索動作控制[R這樣做:
$observer->getControllerAction()
例子:
假如你是在管理區:
<config>
...
<models>
<my_model_prefix>
<class>MyNamespace_MyModule_Model</class>
</my_model_prefix>
</models>
...
<events>
<controller_action_predispatch_adminhtml_myadminroute_mycontroller_admin>
<observers>
<my_event_unique_tag>
<type>singleton</type>
<class>my_model_prefix/observer</class>
<method>myObserverMethod</method>
</my_event_unique_tag>
</observers>
</controller_action_predispatch_adminhtml_myadminroute_mycontroller_admin>
</events>
...
</config>
在3210:
class MyNamespace_MyModule_Model_Observer
{
public function myObserverMethod($observer)
{
$controller = $observer->getControllerAction();
// do some stuff
}
}
感謝您的回覆,我需要您的支持,您能否以我的觀察員如何實現這一點爲例來向我解釋這一點。 – 2014-10-02 06:04:26
我已經添加了一個例子,希望這有助於:) – 2014-10-02 14:07:52