我正在设置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()
任何想法我如何实现这一目标?
答案 0 :(得分:1)
在将节点定义为数组节点时,defaultValue()将断言该值是数组。在此阶段(构建配置树),没有参数概念,因此该值不会被解析,而是被视为“配置”构建器的标量字符串。
要解决此问题,您可以将默认值设置为null。在容器扩展类中,当您读出配置数组并使用它配置容器时,可以使用参数替换null值,稍后将在容器编译时解析该参数。