【问题标题】: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】:
- 请求的
dispatched 字段必须为真
- 前面操作的
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
);