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