6

Zendframework 1ではinit()、コントローラーの初期化にメソッドを使用します。これはzenframework2から取り出されているのを見ました。なぜですか?zf 2で同じことを実現するための最良の方法は何ですか。zf1で開発した以前のプロジェクトをアップグレードしていますが、zf1と比較してzf2では状況が大きく変わっていることがわかります。

zf2に他の変更はありますか?それらは、zf1などの他のメソッドを使用する方法preDispatch()ですかpostDispatch()

誰かがこれを経験しましたか?

4

3 に答える 3

11

zf2では、コントローラーはServiceManagerのサブクラスであるControllerLoaderによってインスタンス化されます。コントローラを初期化する必要がある場合は、ファクトリを使用するか、またはを使用します__construct。単純な初期化に使用__constructし、コントローラーが注入する必要のある他のオブジェクトを消費する場合はFactoryを使用します。

preDispatchまたpostDispatch、新しいイベントシステムに賛成しています。zf2で同じ結果を得るには、disptachおよびrenderイベントのイベントハンドラーを登録します。mvc enventsの完全なリストについては、http: //akrabat.com/zend-framework-2/a-list-of-zf2-events/を参照してください。

また、コントローラーファクトリZF2をセットアップする例については、コントローラーの外部からエンティティマネージャーを取得する方法をここで確認してください。

于 2012-08-13T22:22:42.400 に答える
8

これをコントローラーにドロップすれば機能すると思います。

public function onDispatch(MvcEvent $e)
于 2013-04-22T19:35:46.717 に答える
0

OPが言及しているので、今では同じように機能するpostDispatchことは注目に値します。ただし、大きな違いの1つは、オブジェクトの分解中に__destruct実行を(たとえば)防ぐことができないことです。exit;

于 2015-01-11T19:32:32.867 に答える