是否可以根据我在控制器预调度事件中检查的特定条件转发到不同的操作(在同一控制器内)?
所以例如 - 要运行的动作就是索引
如果我为预调度事件创建一个观察者,如果某个条件为真,我想运行一个不同的动作:myAction而不是indexAction
答案 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在他的回答中已经提到过的那样?表现明智没有区别。