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

发布于 2024-09-13 16:48:50 字数 285 浏览 7 评论 0原文

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

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

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

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

吾家有女初长成 2024-09-20 16:48:50

您可以创建一个插件,例如:

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');

    }
}

将您想要的操作放入此插件中,这些操作最终都会被执行。

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.

↙温凉少女 2024-09-20 16:48:50

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

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

¢好甜 2024-09-20 16:48:50

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文