how to call multiple controller action from within

2019-08-21 08:00发布

I have a controller action and I want it 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?

3条回答
Fickle 薄情
2楼-- · 2019-08-21 08:26

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.

查看更多
做自己的国王
3楼-- · 2019-08-21 08:27

You can either use the ActionStack action helper, or simply put the logic of that method in your postDispatch()

查看更多
做自己的国王
4楼-- · 2019-08-21 08:38

What happens is that the postDispatch is called again after mycontroller->myaction has been dispatched, so it calls mycontroller->myaction again and again.

查看更多
登录 后发表回答