2013-01-11 47 views
0

我是Zend框架的新手,無法在此找到明確的答案。我基本上想要一些代碼在之後執行控制器的頁面邏輯,但在佈局和視圖呈現之前。Zend Framework:控制器操作之後但在視圖呈現前的方法

例如,我想自動刷新Flash消息並自動提供給佈局/視圖,這樣我就不需要在每個控制器中都這樣做。這顯然需要在控制器代碼執行後發生,因爲它可能會添加消息。

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

你是什麼意思自動刷新flashMessenger?它總是新鮮! – markus

+0

我的意思是重新分配getMessages的結果到視圖 - >消息 – helion3

+0

你不應該這樣做,而是使用視圖助手來顯示Flash消息。 – markus

回答

1

最簡單的方法是使用控制器插件,請參見http://framework.zend.com/manual/1.12/en/zend.controller.plugins.htmlpostDispatch()方法在控制器代碼之後但在頁面呈現之前運行。

+0

在閱讀所有答案之前,我曾試過postDispatch,它似乎正常工作。我希望確認它在我相信時能夠運行,謝謝! – helion3

+1

這不適合我。視圖已經在我的代碼運行在postDispatch()分配變量來查看時顯示。 –

0

我只是用:

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

init()使用和正常工作。如果您願意,您可以在postDispatch()preDispatch()dispatchLoopShutdown()中使用它。 A controller plugin不會脫節,我只是還沒有到處做。

相關問題