Magento - 从预派遣观察员转发到不同的控制器动作

时间:2012-07-21 14:19:35

标签: magento

是否可以根据我在控制器预调度事件中检查的特定条件转发到不同的操作(在同一控制器内)?

所以例如 - 要运行的动作就是索引

如果我为预调度事件创建一个观察者,如果某个条件为真,我想运行一个不同的动作:myAction而不是indexAction

1 个答案:

答案 0 :(得分:8)

您可以在预调度挂钩中执行以下方法。

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

        return false;
    }
}

但是,如果您正在使用自定义控制器,为什么不总是将其路由到例如indexAction()?并且在该方法中找出你想要_forward()到下一个的地方,就像Kalpesh在他的回答中已经提到过的那样?表现明智没有区别。