2012-10-29 1 views
3

Je veux influencer le rendu du produit (en passant $params à Mage_Catalog_Helper_Product_View::prepareAndRender()) et enregistré un observateur sur l'événement controller_action_predispatch_catalog_product_view.Magento: Arrêter l'envoi dans l'observateur pre_dispatch

Le rendu fonctionne correctement, mais l'action originale catalog/product/view est toujours exécutée et deux produits sont affichés. Comment puis-je arrêter l'envoi pendant l'observateur pré-dispatch?

Répondre

7
  1. le domaine dispatched de la demande doit être vrai
  2. le drapeau FLAG_NO_DISPATCH de l'action avant doit être réglé sur vrai

Dans le code (à l'intérieur observateur):

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