2012-08-13 20 views
6

En ZendFramework 1 utilizamos init() método para la materia initialize en el controlador. Vi que esto se saca de zenframework 2. ¿Por qué? y cuál es la mejor manera de lograr lo mismo en ZF 2. Estoy actualizando mi anterior proyecto desarrollado en ZF1 y puedo ver las cosas ha cambiado mucho en ZF2 como comparar a ZF1.método init en el controlador ZF2

¿Hay algún otro cambio en zf2, ellos usan otros métodos como preDispatch() y postDispatch() en zf1?

Cualquier persona ha pasado por esto?

Respuesta

12

En los controladores ZF2 se instantated por el ControllerLoader, que es una subclase de la ServiceManager. Si necesita iniciar un controlador, use Factory o __construct. Use __construct para realizar interacciones simples y use Factory si el controlador consume otros objetos que deban inyectarse.

preDispatch y postDispatch también han desaparecido en favor del nuevo sistema de eventos. Para obtener el mismo resultado en ZF2, regístrese controladores de eventos para los disptach y render eventos. Para una lista completa de los envents mvc ver http://akrabat.com/zend-framework-2/a-list-of-zf2-events/

También, echar un vistazo aquí para ver un ejemplo de la creación de una fábrica de controlador ZF2 how to get entity Manager from outside of controller

+4

Además de akrabats lista completa de eventos un blog de Matthew W.O'Phinney http://mwop.net/blog/2012-07-30-the-new-init.html – Sam

+0

Gracias sam, este enlace es de mucha ayuda. – Developer

8

Creo que se puede dejar esto en un controlador y funcionará.

public function onDispatch(MvcEvent $e) 
+0

esta es la respuesta que me gustó. – Ismael

+0

Jesús gracias, ¿por qué todo es tan complicado en ZF2 – Jonathan

0

Desde OP menciona postDispatch, vale la pena señalar que __destruct ahora funciona de una manera similar. Sin embargo, una gran diferencia es que no se puede evitar la ejecución (por ejemplo, a través del exit;) para eliminar el Objeto.

Cuestiones relacionadas