0

私は Zend フレームワークが初めてで、これについて明確な答えが見つかりません。基本的に、ページのコントローラーのロジックの後、レイアウトとビューがレンダリングされる前にコードを実行する必要があります。

たとえば、すべてのコントローラーでそうする必要がないように、フラッシュ メッセージを自動更新してレイアウト/ビューに自動的に提供したいと考えています。メッセージを追加する可能性があるため、これは明らかにコントローラ コードの実行後に発生する必要があります。

$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 に答える