2012-08-31 69 views
6

標記的服務,我想知道是否有在命令查找標籤服務的一種方式。的Symfony2 - 查找命令

我有延伸ContainerAwareCommand命令,我能夠得到的容器,但我想獲得由特定的標籤標記的所有服務。例如,我想有這樣的事情:

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

回答

10

標籤服務僅在依賴注入容器的集結時間,而不是在運行時。因此,要獲得具有特定標記的所有服務,您需要構建一個編譯器過程,以保存這些服務的列表,然後您可以在命令中使用這些服務。這是本文檔中的所有描述:

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

+0

是的,我已經編譯通過,我在我的包通過$容器 - > addCompilerPass()加入。問題是,我找不到在Command中獲取ContainerBuilder的方法,因此我可以調用addCompilerPass()。你有什麼主意嗎? – passkey1510

+0

啊好的,我明白了。我有多個具有多個AppKernel的應用程序,只需調用加載該程序包的正確應用程序即可。非常感謝你。 – passkey1510

+0

@ passkey1510你可以接受這個答案嗎? :-) –