2012-08-13 4 views
6

In Zendframework 1 verwenden wir init() Methode für die Initialisierung von Zeug im Controller. Ich habe gesehen, dass dies aus Zenframework 2 herausgenommen wurde. Warum? Und was ist der beste Weg, um dieselbe Sache in ZF 2 zu erreichen. Ich aktualisiere mein früheres Projekt, das in zf1 entwickelt wurde, und ich kann sehen, dass sich die Dinge in zf2 im Vergleich zu zf1 stark verändert haben.Init-Methode in ZF2-Controller

Gibt es noch eine andere Änderung in zf2, so verwenden wir andere Methoden wie preDispatch() und in zf1?

Wer hat das durchgemacht?

Antwort

12

In zf2 werden die Controller vom ControllerLoader instanziiert, der eine Unterklasse des ServiceManagers ist. Wenn Sie einen Controller initialisieren müssen, verwenden Sie entweder eine Factory oder __construct. Verwenden Sie __construct für Simpile-Initialisierungen, und verwenden Sie eine Factory, wenn der Controller andere Objekte verbraucht, die injiziert werden müssen.

preDispatch und postDispatch sind auch für das neue Ereignissystem gegangen. Um dasselbe Ergebnis in zf2 zu erhalten, registrieren Sie Ereignishandler für die Ereignisse disptach und render. finden Sie eine vollständige Liste der mvc envents http://akrabat.com/zend-framework-2/a-list-of-zf2-events/

Werfen Sie auch einen Blick hier für ein Beispiel für den Aufbau einer Controller Factory ZF2 how to get entity Manager from outside of controller

+4

Neben akrabats vollständige Liste der Veranstaltungen ein Blog von Matthew W.O'Phinney http://mwop.net/blog/2012-07-30-the-new-init.html – Sam

+0

Danke Sam, dieser Link ist wirklich hilfreich. – Developer

8

Ich glaube, Sie diese in einen Controller fallen kann und es wird funktionieren.

public function onDispatch(MvcEvent $e) 
+0

das ist die Antwort, die ich mochte. – Ismael

+0

Jesus danke, warum ist in ZF2 alles so verworren? – Jonathan

0

Seit OP postDispatch erwähnt, ist es erwähnenswert, dass __destruct nun auf ähnliche Weise funktioniert. Ein großer Unterschied besteht jedoch darin, dass die Ausführung nicht verhindert werden kann (z. B. durch exit;), während das Objekt abgerissen wird.