我需要观察者中的 Controller 方法
我的观察员:
public function observer()
{
//need controller action here
}
我的 Controller :
public function adminAction()
{
//my action
}
我的问题
如果没有,那么有什么方法可以通过观察者点击 Controller Action ?
最佳答案
是的,您可以监听动态事件: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
并且你的 action 是 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
在您的观察者类中,您可以通过执行以下操作来检索 Action Controller :$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>
在
Model/Observer.php
中:class MyNamespace_MyModule_Model_Observer
{
public function myObserverMethod($observer)
{
$controller = $observer->getControllerAction();
// do some stuff
}
}
关于magento - 如何在magento的Observer中获取 Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26140361/