I have a controller action and I want i开发者_运维百科t to be executed after any action. I have written an action helper with this method:
public function postDispatch(){
$actionstack = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack');
$actionstack->direct('myaction', 'mycontroller');
}
But it seems that it stuck in a loop, what is wrong with my code?
You could create a Plugin, for example:
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');
}
}
So put the actions you want in this plugin and these aciotns will be executed after all.
You can either use the ActionStack
action helper, or simply put the logic of that method in your postDispatch()
What happens is that the postDispatch is called again after mycontroller->myaction has been dispatched, so it calls mycontroller->myaction again and again.
精彩评论