0

我是 Zend 框架的新手,对此找不到明确的答案。我本质上希望在控制器的页面逻辑之后,但在呈现布局和视图之前执行一些代码。

例如,我想自动刷新 flash 消息并将它们自动提供给布局/视图,这样我就不需要在每个控制器中都这样做。这显然需要在控制器代码执行后发生,因为它可能会添加消息。

$this->view->messages = $this->_helper->flashMessenger->getMessages();
4

2 回答 2

1

最简单的方法是使用控制器插件,请参阅http://framework.zend.com/manual/1.12/en/zend.controller.plugins.html。该postDispatch()方法在您的控制器代码之后但在呈现页面之前运行。

于 2013-01-12T00:38:14.783 回答
0

我只是使用:

public function init()
{
    if ($this->getHelper('FlashMessenger')->hasMessages()) {
        $this->view->messages = $this->getHelper('FlashMessenger')->getMessages();
    }
}

我使用它init(),它工作正常。你可以使用它postDispatch()preDispatch()或者dispatchLoopShutdown()如果你喜欢。控制器插件不会出格,我只是还没有开始做一个。

于 2013-01-12T08:21:45.753 回答