2012-08-31 18 views
6

Me gustaría saber si hay una forma de encontrar servicios etiquetados en Command.Symfony2 - Buscar servicios etiquetados en el comando

Tengo un comando que se extiende ContainerAwareCommand, puedo acceder al contenedor pero me gustaría obtener todos los servicios etiquetados por una etiqueta específica. Por ejemplo, me gustaría tener algo así:

$this->getContainer()->findTaggedServiceIds('smtp.transport') 

Respuesta

10

servicios Etiquetar sólo están disponibles en la acumulación de tiempo del contenedor de inyección de dependencias, no en tiempo de ejecución. Por lo tanto, para obtener todos los servicios con una determinada etiqueta, deberá crear un pase de compilación que guarde una lista de estos servicios que luego puede utilizar en su comando. Todo esto se describe en este documento:

http://symfony.com/doc/current/components/dependency_injection/tags.html

+0

Sí, ya tengo un pase compilador que he añadido a través $ por contenedor> addCompilerPass() en mi paquete. El problema es que no pude encontrar una forma de obtener el ContainerBuilder en Comando para poder llamar a addCompilerPass(). ¿Tiene alguna idea? – passkey1510

+0

Ah Ok, lo tengo. Tengo varias aplicaciones que tienen múltiples AppKernel, solo tengo que llamar a la aplicación correcta que carga el paquete. Muchas gracias. – passkey1510

+0

@ passkey1510 ¿Puede aceptar esta respuesta? :-) –

Cuestiones relacionadas