在我的php symfony应用中,我得到了以下parameters.yml
:
my_param: some_value
my_nested:
param: some_value2 //4 spaces here, need to set only this param
param2: some_value3 // this should NOT be changed
我可以使用以下代码在容器中设置参数:
$container->setParameter('my_param', $some_value);
它工作正常,但是我需要设置一个嵌套参数,像这样:
$container->setParameter('my_nested.param', $some_value);
我收到一条错误消息,说它不能设置嵌套参数。任何想法如何解决? my_nested.param2
(以及此处的其他嵌套参数)不应更改。谢谢。
答案 0 :(得分:2)
您需要使用类似数组的结构,如下所示:
$container->setParameter('my_nested', [
'param' => $some_value_2,
]);
在这里看看:https://symfony.com/doc/current/service_container/parameters.html
更改嵌套参数的示例:
$container->setParameter('my_nested', [
'top' => [
'nested' => 'a',
]
]);
$parameter = $container->getParameter('my_nested');
$parameter['top']['nested'] = 'b';
$container->setParameter('my_nested', $parameter);
答案 1 :(得分:1)
您可以这样定义值:
parameters.yml:
parameters:
my_param: some_value
my_nested.param: some_value2
您可以获取描述中显示的值,但无法修改此值。 symfony将通过错误通知您:
无法在冻结的ParameterBag上调用set()。