2017-01-06 85 views
1

對於可分發的Symfony包,我希望允許通過parameters.yml引用資源文件。Symfony 2.8:在parameters.yml中綁定別名

我想允許使用bundle別名,例如@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"). 

因此我的問題:是否有一個特點,或者至少一個公約如何在配置文件中引用bundle別名,甚至可以即時解決它們?或者也許有一種方法可以「逐字地」注入參數,例如,當我將"%some.value%"作爲參數傳遞給服務時,它不會嘗試將其解析爲依賴項?

回答

1

只需使用雙@符號爲

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

我想這是一個可行的解決方案,雖然它看上去有點難看。我現在會接受它,但仍希望有更好的方法。 ;) – lxg