php symfony在容器中设置嵌套参数
在我的php symfony应用程序中,我得到了以下php symfony在容器中设置嵌套参数,php,symfony,Php,Symfony,在我的php symfony应用程序中,我得到了以下参数。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', $s
参数。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);
$container->setParameter('my_nested', [
'param' => $some_value_2,
]);
我得到一个错误,说它不能设置嵌套参数。有没有办法解决这个问题
my_nested.param2
(以及此处的其他嵌套参数)不应更改。谢谢。您需要使用类似数组的结构,如下所示:
$container->setParameter('my_nested.param', $some_value);
$container->setParameter('my_nested', [
'param' => $some_value_2,
]);
请看这里:
更改嵌套参数的示例如下:
$container->setParameter('my_nested', [
'top' => [
'nested' => 'a',
]
]);
$parameter = $container->getParameter('my_nested');
$parameter['top']['nested'] = 'b';
$container->setParameter('my_nested', $parameter);
您需要使用类似数组的结构,如下所示:
$container->setParameter('my_nested.param', $some_value);
$container->setParameter('my_nested', [
'param' => $some_value_2,
]);
请看这里:
更改嵌套参数的示例如下:
$container->setParameter('my_nested', [
'top' => [
'nested' => 'a',
]
]);
$parameter = $container->getParameter('my_nested');
$parameter['top']['nested'] = 'b';
$container->setParameter('my_nested', $parameter);
您可以这样定义值: parameters.yml:
parameters:
my_param: some_value
my_nested.param: some_value2
您可以获得描述中显示的值,但无法修改此值。
symfony将通知您以下错误:
无法对冻结的ParameterBag调用set()
您可以这样定义值: parameters.yml:
parameters:
my_param: some_value
my_nested.param: some_value2
您可以获得描述中显示的值,但无法修改此值。
symfony将通知您以下错误:
无法对冻结的ParameterBag调用set()
第三行有多少空格?这很重要。我讨厌这个事实!对空间敏感的上下文很糟糕。4个空格,添加到问题信息中第三行有多少空格?这很重要。我讨厌这个事实!对空间敏感的上下文很糟糕。4个空格,添加到问题infoyes中,但是如果有更多的嵌套参数,我只需要设置其中的1个怎么办。不幸的是,其他的被删除了,在这种情况下,使用array\u merge和getParameter!您可以执行
getParameter('xxx')
,然后更改数组和setParameter('xxx',$array)
我测试了您的代码,但没有办法,symfony返回错误:无法在冻结的参数包上调用set()。如果是这种情况,为什么会将其标记为正确答案?我很困惑是的,但是如果有更多的嵌套参数,而我只需要设置其中的一个呢。不幸的是,其他的被删除了,在这种情况下,使用array\u merge和getParameter!您可以执行getParameter('xxx')
,然后更改数组和setParameter('xxx',$array)
我测试了您的代码,但没有办法,symfony返回错误:无法在冻结的参数包上调用set()。如果是这种情况,为什么会将其标记为正确答案?我很困惑如何解冻一袋冻结的参数?我认为这是不可能的。似乎你想坚持某种永久性的修改。在这种情况下,考虑使用SESSION你如何解冻冷冻袋的参数?我认为是不可能的。看来你想坚持某种永久性修改。在这种情况下,考虑使用会话。