2012-07-21 7 views
6

Czy jest możliwe przekazanie do innej akcji (w ramach tego samego kontrolera) w oparciu o pewien warunek, który mogę sprawdzić w zdarzeniu poprzedzającym wysyłkę kontrolera?Magento - aby przekazać do innej czynności kontrolera od obserwatora przed wysłaniem

Tak na przykład - akcja ma być prowadzony jest powiedzieć indeks

jeśli utworzyć obserwatora dla pre przypadku wysyłki, czy dany warunek jest prawdziwy, chciałbym uruchomić inną czynność: myAction jako przeciwieństwie do indeksuAkcja

Odpowiedz

7

Możesz zrobić coś w następujący sposób w haku przed wysyłką.

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

     return false; 
    } 
} 

Chociaż, jeśli pracujesz z kontrolerem niestandardowym, dlaczego nie zawsze kierujesz go na przykład do funkcji indexAction()? I w ramach tej metody dowiedzieć się, gdzie chcesz _forward() na następny, jak Kalpesh już wspomniano w jego odpowiedzi? Wydajność nie ma żadnej różnicy.

Powiązane problemy