2012-07-21 12 views
6

Ist es möglich, auf eine andere Aktion (innerhalb der gleichen Controller) basierend auf einer bestimmten Bedingung, die ich in der Steuerung vor Dispatch-Ereignis suchen kann?Magento - zu anderen Controller-Aktion von Pre-Dispatch Beobachter

So zum Beispiel - die Aktion zu laufen werden soll, sagen Index

Wenn ich einen Beobachter für die Pre Dispatch Ereignis zu erstellen, wenn eine bestimmte Bedingung erfüllt ist, ich eine andere Aktion ausgeführt werden sollte: MyAction als im Gegensatz zu indexAction

Antwort

7

Sie könnten etwas wie die folgende Methode innerhalb eines Pre-Versand-Hooks tun.

public function yourMethod($observer) 
{ 
    if ($condition) { 
     $request = Mage::app()->getRequest(); 
     $request->initForward() 
      ->setControllerName('controllername') 
      ->setModuleName('modulename') 
      ->setActionName('actionname') 
      ->setDispatched(false); 

     return false; 
    } 
} 

Obwohl, wenn Sie mit einem benutzerdefinierten Controller arbeiten, warum es nicht immer an, zum Beispiel die indexAction()? Und innerhalb dieser Methode herauszufinden, wo Sie _forward() zu nächsten, wie Kalpesh bereits in seiner Antwort erwähnt? Leistungsmäßig gibt es keinen Unterschied.

Verwandte Themen