我需要一个带有默认值的数组,我可以在其中覆盖它们并添加新的数组。
到目前为止,我得到了这个:
$treeBuilder
->root('acme')
->children()
->arrayNode('templates')
->children()
->scalarNode('layout')->defaultValue('my-layout')->cannotBeEmpty()->end()
->scalarNode('navbar')->defaultValue('my-navbar')->cannotBeEmpty()->end()
->end()
->prototype('scalar')
->end()
->end()
->end();
默认情况下,输出数组看起来像这样:
Array(
[templates] => Array(
[layout] => 'my-layout'
[navbar] => 'my-navbar'
)
)
我设置了我的配置
acme:
templates:
layout: my-new-layout
foo: bar
hello: world
我期望的是:
Array(
[templates] => Array(
[layout] => 'my-new-layout'
[navbar] => 'my-navbar'
[foo] => 'bar'
[hello] => 'world'
)
)
我得到的:
Array(
[templates] => Array(
[foo] => 'bar'
[hello] => 'world'
)
)
原型覆盖所有内容,正确的配置是什么?
阵列节点内有未经表演的原型。我还将addDefaultsIfNotSet()
添加到数组节点。
$treeBuilder
->root('acme')
->children()
->arrayNode('templates')
->addDefaultsIfNotSet()
->ignoreExtraKeys()
->children()
->scalarNode('layout')->defaultValue('my-layout')->cannotBeEmpty()->end()
->scalarNode('navbar')->defaultValue('my-navbar')->cannotBeEmpty()->end()
->end()
->end()
->end();