0

コンパイラ パス ( を実装するクラスCompilerPassInterface) を作成し、それをコントローラーの 1 つから 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

コンパイラパスを登録する場合は、バンドルのコントローラではなく、バンドルクラスで行う必要があります。このリンクはすべてを説明しています:

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

于 2012-12-15T17:22:16.310 に答える