magento - 如何在magento的Observer中获取 Controller 方法?

标签 magento

我需要观察者中的 Controller 方法

我的观察员:

public function observer()
{
//need controller action here
}

我的 Controller :
public function adminAction()
    {
    //my action
    }

我的问题
  • 是否可以在 magento 的观察者中调用 Controller 方法。
  • 如果是,请解释如何?
    如果没有,那么有什么方法可以通过观察者点击 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_admincontroller_action_postdispatch_myadminroute_mycontroller_admin
    如果您在管理区域,您可以收听:
    controller_action_predispatch_adminhtml_myadminroute_mycontroller_admincontroller_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/

    相关文章:

    css - Magento 1.8.1 从 1.7 升级后缺少 css 样式

    php - Magento CE 2.0 安装在大约 90% 时停止

    Magento 自定义模块管理员权限

    php - 如何获取网址以从 Magento 的购物车中删除产品?

    magento - CMS页面添加 block magento

    Magento:如何使用 page.xml 文件在自定义 2 列左侧页面中添加 js 或 css 文件

    php - 检查类别在 magento 中是否有子类别

    rest - Magento 2 : create order with REST API

    php - Magento session 不会在事件观察器中更新

    email - Magento 中的交易电子邮件列表默认为空