Php Magento:在预调度观察者中停止调度

Php Magento:在预调度观察者中停止调度,php,magento,observer-pattern,dispatch,Php,Magento,Observer Pattern,Dispatch,我想影响产品呈现(将$params传递到Mage\u Catalog\u Helper\u product\u View::prepareAndRender())并在控制器动作\u predispatch\u Catalog\u product\u View事件上注册观察者 渲染工作正常,但仍会执行原始的目录/产品/视图操作,因此会显示两个产品 如何在预调度期间停止调度 请求的dispatched字段必须为true 必须将前部动作的标志\u NO\u DISPATCH标志设置为true 代码中(

我想影响产品呈现(将
$params
传递到
Mage\u Catalog\u Helper\u product\u View::prepareAndRender()
)并在
控制器动作\u predispatch\u Catalog\u product\u View
事件上注册观察者

渲染工作正常,但仍会执行原始的
目录/产品/视图
操作,因此会显示两个产品

如何在预调度期间停止调度

  • 请求的
    dispatched
    字段必须为true
  • 必须将前部动作的
    标志\u NO\u 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
    );