Symfony 2.8:在parameters.yml中捆绑别名

时间:2017-01-06 12:03:39

标签: php symfony configuration

对于可分发的Symfony包,我想允许通过parameters.yml引用资源文件。

我想允许使用包别名,例如@FoobarSomethingBundle/Resources/foo/bar.png将使用src/Foobar/SomethingBundle/Resources/foo/bar.png解析为Kernel::locateResource

但显然我不能使用前导@符号来表示引用以别名开头,而不是文件系统路径本身。例如:

### 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 个答案:

答案 0 :(得分:1)

只需使用双@符号

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