【问题标题】:Magento: Stop dispatching in pre_dispatch observerMagento:停止在 pre_dispatch 观察者中调度
【发布时间】:2012-10-19 06:44:20
【问题描述】:

我想影响产品渲染(将$params 传递给Mage_Catalog_Helper_Product_View::prepareAndRender())并在controller_action_predispatch_catalog_product_viewevent 上注册了一个观察者。

渲染工作正常,但原始的catalog/product/view 操作仍在执行,因此显示了两个产品。

如何在预调度观察者期间停止调度?

【问题讨论】:

    标签: php magento observer-pattern dispatch


    【解决方案1】:
    1. 请求的dispatched 字段必须为真
    2. 前面操作的FLAG_NO_DISPATCH标志必须设置为true

    在代码中(观察者内部):

    // @see Mage_Core_Controller_Varien_Action::dispatch()
    $controller = $observer->getControllerAction();
    $controller->getRequest()->setDispatched(true);
    $controller->setFlag(
        '', 
        Mage_Core_Controller_Front_Action::FLAG_NO_DISPATCH, 
        true
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多