是的,你可以在动态事件监听:
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