我是Zend框架的新手,無法在此找到明確的答案。我基本上想要一些代碼在之後執行控制器的頁面邏輯,但在佈局和視圖呈現之前。Zend Framework:控制器操作之後但在視圖呈現前的方法
例如,我想自動刷新Flash消息並自動提供給佈局/視圖,這樣我就不需要在每個控制器中都這樣做。這顯然需要在控制器代碼執行後發生,因爲它可能會添加消息。
$this->view->messages = $this->_helper->flashMessenger->getMessages();
我是Zend框架的新手,無法在此找到明確的答案。我基本上想要一些代碼在之後執行控制器的頁面邏輯,但在佈局和視圖呈現之前。Zend Framework:控制器操作之後但在視圖呈現前的方法
例如,我想自動刷新Flash消息並自動提供給佈局/視圖,這樣我就不需要在每個控制器中都這樣做。這顯然需要在控制器代碼執行後發生,因爲它可能會添加消息。
$this->view->messages = $this->_helper->flashMessenger->getMessages();
最簡單的方法是使用控制器插件,請參見http://framework.zend.com/manual/1.12/en/zend.controller.plugins.html。 postDispatch()
方法在控制器代碼之後但在頁面呈現之前運行。
在閱讀所有答案之前,我曾試過postDispatch,它似乎正常工作。我希望確認它在我相信時能夠運行,謝謝! – helion3
這不適合我。視圖已經在我的代碼運行在postDispatch()分配變量來查看時顯示。 –
我只是用:
public function init()
{
if ($this->getHelper('FlashMessenger')->hasMessages()) {
$this->view->messages = $this->getHelper('FlashMessenger')->getMessages();
}
}
我init()
使用和正常工作。如果您願意,您可以在postDispatch()
,preDispatch()
或dispatchLoopShutdown()
中使用它。 A controller plugin不會脫節,我只是還沒有到處做。
你是什麼意思自動刷新flashMessenger?它總是新鮮! – markus
我的意思是重新分配getMessages的結果到視圖 - >消息 – helion3
你不應該這樣做,而是使用視圖助手來顯示Flash消息。 – markus