Magento:在pre_dispatch观察者处停止调度

问题描述:

我想影响产品呈现(通过$paramsMage_Catalog_Helper_Product_View::prepareAndRender()),并在controller_action_predispatch_catalog_product_view事件中注册观察者。Magento:在pre_dispatch观察者处停止调度

渲染工作正常,但原始的catalog/product/view动作仍然执行,所以显示两个产品。

如何在派遣前观察员停止调度?

  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 
);