php - prepersist - ¿Escuchando múltiples eventos con un oyente?
symfony onkernelresponse (2)
Estoy creando una aplicación en Symfony2 que tiene un aspecto social (muchas de las acciones que realiza un usuario en el sitio se mostrarán en una lista de estilo "noticias" para que otros puedan verla). He determinado que el sistema de escucha / envío de eventos sf2 es la mejor manera de manejar esto, pero me he encontrado con un problema al tratar de configurar mi escucha para manejar muchos eventos diferentes.
La documentación (ahora desactualizada) que he encontrado en mis búsquedas parece indicar que, en un momento dado, los oyentes de eventos podrían registrarse en múltiples eventos, pero el código ha sido refactorizado, y ahora la configuración es algo como esto:
config.yml:
services:
social.listener:
class: F/Q/C/N/SocialEventListener
tags:
- { name: kernel.listener, event: onSocialShare }
¿Hay alguna manera de:
-
event: [onSocialShare, onSocialFriend, onSocialCreate]
fácilmente varios eventos (algo comoevent: [onSocialShare, onSocialFriend, onSocialCreate]
funciona, pero parece que rápidamente se volverá feo y no se podrá mantener, obstruyendo mi archivo de configuración con potencialmente docenas de eventos sociales - Definir el evento al que quiero suscribirme desde el código (como se hizo anteriormente)
- O posiblemente otra opción mejor que no haya pensado todavía.
Gracias por adelantado.
Creo que será más fácil usar EventSubscriber, puedes definir los eventos que quieras usar directamente en esa clase
http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html
La respuesta del grupo google de usuarios de Symfony (tema here ) es que la forma adecuada de hacerlo es agregando varias etiquetas:
services:
social.listener:
class: F/Q/C/N/SocialEventListener
tags:
- { name: kernel.listener, event: onSocialShare }
- { name: kernel.listener, event: onSocialFriend }
- { name: kernel.listener, event: ... etc }
Por lo tanto, parece que actualmente, no hay una buena manera de agregar suscripciones de eventos desde el código de escucha. Oh bien.