7

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

例如 - 即将运行的动作是索引

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

4

1 回答 1

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 在他的回答中已经提到的那样?性能方面没有区别。

于 2012-07-21T16:23:58.410 回答