2017-01-06 8 views
1

配布可能なSymfonyバンドルについては、リソースファイルを参照することをparameters.ymlで許可します。Symfony 2.8:parameters.ymlにバンドルエイリアス

バンドルエイリアスの使用を許可します。 @FoobarSomethingBundle/Resources/foo/bar.pngは、Kernel::locateResourceを使用してsrc/Foobar/SomethingBundle/Resources/foo/bar.pngに解決されます。

しかし、明らかにリファレンスがエイリアスで始まり、ファイルシステムのパスではないことを示すために先頭の@記号を使用することはできません。たとえば、次のように

### app/config/parameters.yml 
some.value : "@FoobarSomethingBundle/Resources/foo/bar.png" 

symfonyのサービスエイリアスとしてそれを解釈して、キャッシュをクリアすると失敗します:

[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]                           
You cannot dump a container with parameters that contain references to other services (reference to service "foobarsomethingbundle/resources/foo/bar.png" found in "/some.value"). 

そこで、私の質問:機能または上に少なくとも慣習があります設定ファイルでバンドルエイリアスを参照する方法、そしてそれらを即座に解決する方法もありますか?

パラメータを「文字通り」挿入する方法があります。サービスに引数として"%some.value%"を渡すと、それを依存関係として解決しようとしませんでしたか?

答えて

1

ただ、私はそれは少し醜いけれどもそれは、実行可能な解決策だと思うこと

### app/config/parameters.yml 
some.value : "@@FoobarSomethingBundle/Resources/foo/bar.png" 
+0

のための二重の@記号を使用します。私は今のところそれを受け入れ、より良い方法があることを望んでいる。 ;) – lxg

関連する問題