我有一个控制器动作,我想让它在任何动作后执行。我用这种方法写了一个动作助手:
public function postDispatch(){
$actionstack = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack');
$actionstack->direct('myaction', 'mycontroller');
}
但似乎它陷入了循环,我的代码出了什么问题?
答案 0 :(得分:1)
您可以使用ActionStack
操作助手,也可以只将该方法的逻辑放在postDispatch()
答案 1 :(得分:1)
您可以创建一个插件,例如:
class Plugin_Sidebar extends Zend_Controller_Plugin_Abstract {
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
if($request->getModuleName() == 'admin')
{
return;
}
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
if (null === $viewRenderer->view) {
$viewRenderer->initView();
}
$view = $viewRenderer->view;
$yt = new Zend_Gdata_YouTube();
$view->videos = $yt->getUserUploads('MysteryGuitarMan');
}
}
所以把你想要的动作放在这个插件中,这些aciotns毕竟会被执行。
答案 2 :(得分:0)
在调度mycontroller-> myaction之后,会再次调用postDispatch,因此它会一次又一次地调用mycontroller-> myaction。