编译器传递在symfony 2控制器中注册

时间:2012-12-15 17:14:53

标签: symfony

我写了一个编译器传递(实现CompilerPassInterface的类),我想从我的一个控制器注册DI容器。我想要做的是使某个服务X收集以某种方式标记的其他服务(Y,Z,...)。在控制器外面我会做:

$container = new ContainerBuilder();
$container->addCompilerPass(new TransportCompilerPass);

但在我的情况下,我想使用控制器可用的容器,以便我可以利用我添加到应用程序中的services.xml中的定义。我发现控制器的$ this->容器具有get方法而不是addCompilerPass,这很奇怪。显然,必须是因为$this->container不是ContainerBuilder

无论如何......有人能告诉我一个解决方法吗?

1 个答案:

答案 0 :(得分:2)

ooooops

当你想要注册编译器传递时,这必须在bundle类中完成,而不是在budle的任何控制器中完成。这个链接解释了一切:

http://symfony.com/doc/current/cookbook/service_container/compiler_passes.html