php symfony在容器中设置嵌套参数

时间:2018-10-12 11:06:36

标签: php symfony

在我的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(以及此处的其他嵌套参数)不应更改。谢谢。

2 个答案:

答案 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()。