0

我写了一个编译器通道(一个实现的类CompilerPassInterface),我想将它注册到我的一个控制器的 DI 容器中。我想做的是让某个服务 X 收集以某种方式标记的其他服务(Y、Z、...)。在控制器之外,我会简单地做:

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

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

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

4

1 回答 1

2

ooooops

when u wanna register a compiler pass this must be done in the bundle class and not in any of the controllers of the budle. This link explains everything:

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

于 2012-12-15T17:22:16.310 回答