2012-07-21 4 views
6

コントローラのプリディスパッチイベントで確認できる特定の条件に基づいて(同じコントローラ内で)別のアクションに転送することはできますか?例えばのでMagento - プリディスパッチオブザーバから別のコントローラのアクションに転送する

- 実行されようとしている行動は、私が前ディスパッチイベントのオブザーバを作成する場合、特定の条件が真の場合、私は別のアクションを実行したいインデックス

言うです:myActionとしてindexActionに反対します

答えて

7

あなたはディスパッチ前のフックの中で次のようなことをすることができます。

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

     return false; 
    } 
} 

カスタムコントローラーで作業している場合は、必ずしもindexAction()などにルーティングしないのはなぜですか?そしてその方法の中で、あなたの答えですでに言及されているカルペシュのように、あなたがどこに_forward()をしたいかを決めます。パフォーマンスは賢明ではありません。

関連する問題