2012-08-31 15 views
6

Chciałbym wiedzieć, czy istnieje sposób na znalezienie oznaczonych usług w Command.Symfony2 - Znajdź oznaczone usługi w komendzie

Mam polecenie, które rozciąga się na ContainerAwareCommand, jestem w stanie dostać się do kontenera, ale chciałbym uzyskać wszystkie usługi, które są oznaczone tagiem. Na przykład, chciałbym mieć coś takiego:

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

Odpowiedz

10

Tagged usługi są dostępne tylko na gromadzeniu czasie pojemnika wtrysku zależność, a nie w czasie wykonywania. Aby uzyskać dostęp do wszystkich usług za pomocą określonego znacznika, należy utworzyć przepustkę kompilatora, która zapisuje listę tych usług, które następnie można wykorzystać w poleceniu. To wszystko jest opisane w tym dokumencie:

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

+0

Tak, mam już przepustkę kompilatora że dodaną poprzez $ zamykanym pojemniku> addCompilerPass() w moim pakiecie. Problem polega na tym, że nie mogłem znaleźć sposobu, aby przekonać ContainerBuilder do polecenia, aby móc wywołać metodę addCompilerPass(). Masz jakiś pomysł? – passkey1510

+0

Ah Ok, mam to. Mam wiele aplikacji, które mają wiele AppKernel, wystarczy zadzwonić do odpowiedniej aplikacji, która ładuje pakiet. Dziękuję Ci bardzo. – passkey1510

+0

@ passkey1510 Możesz więc przyjąć tę odpowiedź? :-) –