3

我想影响产品渲染(传递$params给)并在事件中Mage_Catalog_Helper_Product_View::prepareAndRender()注册一个观察者。controller_action_predispatch_catalog_product_view

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

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

4

1 回答 1

8
  1. dispatched请求的字段必须为真
  2. 前面动作的FLAG_NO_DISPATCH标志必须设置为真

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

// @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
);
于 2012-10-29T22:25:05.790 回答