我写了一个编译器传递(实现CompilerPassInterface
的类),我想从我的一个控制器注册DI容器。我想要做的是使某个服务X收集以某种方式标记的其他服务(Y,Z,...)。在控制器外面我会做:
$container = new ContainerBuilder();
$container->addCompilerPass(new TransportCompilerPass);
但在我的情况下,我想使用控制器可用的容器,以便我可以利用我添加到应用程序中的services.xml中的定义。我发现控制器的$ this->容器具有get
方法而不是addCompilerPass
,这很奇怪。显然,必须是因为$this->container
不是ContainerBuilder
。
无论如何......有人能告诉我一个解决方法吗?
答案 0 :(得分:2)
ooooops
当你想要注册编译器传递时,这必须在bundle类中完成,而不是在budle的任何控制器中完成。这个链接解释了一切:
http://symfony.com/doc/current/cookbook/service_container/compiler_passes.html