如何从ZF中的任何操作中调用多个控制器操作?

时间:2010-08-06 11:13:10

标签: zend-framework helper

我有一个控制器动作,我想让它在任何动作后执行。我用这种方法写了一个动作助手:

public function postDispatch(){    
    $actionstack = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack');
    $actionstack->direct('myaction', 'mycontroller');
}

但似乎它陷入了循环,我的代码出了什么问题?

3 个答案:

答案 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。