2012-08-31 50 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你可以接受这个答案吗? :-) –