使用Parameter作为数组节点的默认值

时间:2017-05-16 11:26:24

标签: php symfony configuration

我正在设置bundle的配置,我正在使用Configuration类。我的my_node节点有一个list子节点,我想为它设置一个默认值。

我想从参数中设置值。当我尝试使用参数名称调用defaultValue时,会向InvalidArgumentException投掷the default value of an array node has to be an array

->arrayNode(‘my_node’)
    ->children()
        ->arrayNode('list')
            ->prototype('scalar')->end()
            ->defaultValue([‘foo’, ‘bar’])   //this works
            ->defaultValue(‘%some_parameter%’)  //this does not
        ->end()
     ->end()
->end()

任何想法我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

在将节点定义为数组节点时,defaultValue()将断言该值是数组。在此阶段(构建配置树),没有参数概念,因此该值不会被解析,而是被视为“配置”构建器的标量字符串。

要解决此问题,您可以将默认值设置为null。在容器扩展类中,当您读出配置数组并使用它配置容器时,可以使用参数替换null值,稍后将在容器编译时解析该参数。