Symfony Configuration - 将arrayNode默认值与prototype合并

时间:2017-04-18 19:04:53

标签: symfony configuration-files

我需要一个带默认值的数组,我可以覆盖它们,然后添加新的数组 到目前为止我得到了这个:

$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'
    )
)

原型会覆盖所有内容,正确的配置是什么?

1 个答案:

答案 0 :(得分:0)

阵列节点中有不必要的原型。我还在数组节点中添加了altA <- 110 altB <- 90 altR <- 150 AqN20 <- funcName(df, A = altA, B = altB, R = altR)

addDefaultsIfNotSet()