0

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

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

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

4

3 回答 3

1

您可以使用ActionStack动作助手,也可以简单地将该方法的逻辑放入您的postDispatch()

于 2010-08-06T13:20:32.200 回答
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');

    }
}

所以把你想要的动作放在这个插件中,这些动作终究会被执行。

于 2010-08-06T17:42:14.280 回答
0

发生的情况是在 mycontroller->myaction 被调度后再次调用 postDispatch,因此它一次又一次地调用 mycontroller->myaction。

于 2010-08-06T11:20:29.573 回答