我是 Zend 框架的新手,对此找不到明确的答案。我本质上希望在控制器的页面逻辑之后,但在呈现布局和视图之前执行一些代码。
例如,我想自动刷新 flash 消息并将它们自动提供给布局/视图,这样我就不需要在每个控制器中都这样做。这显然需要在控制器代码执行后发生,因为它可能会添加消息。
$this->view->messages = $this->_helper->flashMessenger->getMessages();
我是 Zend 框架的新手,对此找不到明确的答案。我本质上希望在控制器的页面逻辑之后,但在呈现布局和视图之前执行一些代码。
例如,我想自动刷新 flash 消息并将它们自动提供给布局/视图,这样我就不需要在每个控制器中都这样做。这显然需要在控制器代码执行后发生,因为它可能会添加消息。
$this->view->messages = $this->_helper->flashMessenger->getMessages();
最简单的方法是使用控制器插件,请参阅http://framework.zend.com/manual/1.12/en/zend.controller.plugins.html。该postDispatch()
方法在您的控制器代码之后但在呈现页面之前运行。
我只是使用:
public function init()
{
if ($this->getHelper('FlashMessenger')->hasMessages()) {
$this->view->messages = $this->getHelper('FlashMessenger')->getMessages();
}
}
我使用它init()
,它工作正常。你可以使用它postDispatch()
,preDispatch()
或者dispatchLoopShutdown()
如果你喜欢。控制器插件不会出格,我只是还没有开始做一个。