Magento:在pre_dispatch观察者处停止调度
问题描述:
我想影响产品呈现(通过$params
至Mage_Catalog_Helper_Product_View::prepareAndRender()
),并在controller_action_predispatch_catalog_product_view
事件中注册观察者。Magento:在pre_dispatch观察者处停止调度
渲染工作正常,但原始的catalog/product/view
动作仍然执行,所以显示两个产品。
如何在派遣前观察员停止调度?
答
- 请求的
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
);