Eventos en Symfony2

Este artículo es un resumen práctico-recordatorio de lo necesario para implementar eventos en un Bundle de Symfony2. Para una guía detallada recomiendo visitar este enlace o la doc oficial.

Si te tenemos el Bundle Acme/DemoBundle:

  1. Crear la clase Acme/DemoBundle/DemoEvents.php donde se definirán las constantes con el nombre de los diferentes eventos
  2. Crear la carpeta Acme/DemoBundle/Event. Aquí se almacenarán las clases que representan los eventos, por ejemplo MyActionEvent.php. La clase tendrá que recibir en el constructor las clases con las que el Listener trabajará.
  3. Crear la carpeta Acme/DemoBundle/EventListener. Aquí se guardarán las clases que hacen el trabajo lógico que realmente queremos implementar. Serán los Listeners o los Subscribers. Por ejemplo, Acme/DemoBundle/SendEmailListener.php. La clase implentará métodos.
  4. Definir el Listener como servicio en Acme/DemoBundle/Resources/config/listeners.yml.
  5. Lanzar el Evento desde donde se necesite (un controlador, un manager, etc…) utilizando el servicio EventDispatcher.

Hay muchos matices dependiendo si se utiliza un Listener o un Subscriber.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>