【问题标题】:Symfony: Use a value within a parameter array as a service parameterSymfony:使用参数数组中的值作为服务参数
【发布时间】:2021-11-12 13:48:07
【问题描述】:
Symfony 3.4
我有一个看起来像这样的参数:
parameters.yml:
paramters:
some_configuration:
param1: value1
param2: value2
我想将 some_configuration 参数中的值直接传递给服务,而不是 some_configuration 本身。像这样的:
services.yml:
services:
AppBundle\Service\MyService:
arguments:
$serviceparam: '%some_configuration.param2%'
这有可能吗?
【问题讨论】:
标签:
symfony
symfony-3.4
symfony-dependency-injection
【解决方案1】:
Symfony 2.7.3 以上
在我见过的所有 Symfony 配置文件中,“参数:”下的条目始终是完全限定的。
我不完全明白为什么会这样,但它可以帮助你在你的parameters.yml 中写下这样的条目:
parameters.yml:
parameters:
some_configuration.param1: value1
some_configuration.param2: value2
要在service.yaml 中使用参数数组值,您可以将其用作普通参数(就像您写的一样!):
service.yaml
services:
AppBundle\Service\MyService:
arguments:
$serviceparam: '%some_configuration.param2%'
在 symfony 2.7.3 中:
可以通过以下方式完成:
services:
AppBundle\Service\MyService:
arguments:
$serviceparam: ["@=container.getParameter('some_configuration')['param1']"]
It works for symfony 2.7.3
有关表达式语言的更多信息,请参阅symfony doc
【解决方案2】:
services:
AppBundle\Service\MyService:
arguments:
$serviceparam: '@=parameter("some_configuration")["param2"]'