Symfony配置-将arrayNode默认值与prototype合并
我需要一个具有默认值的数组,可以在其中覆盖这些值,并添加新值。Symfony配置-将arrayNode默认值与prototype合并,symfony,configuration-files,Symfony,Configuration Files,我需要一个具有默认值的数组,可以在其中覆盖这些值,并添加新值。 到目前为止,我得到了这个: $treeBuilder ->root('acme') ->children() ->arrayNode('templates') ->children() ->scalarNode('layout')->defaultValue('my-layout')->cannotBeE
到目前为止,我得到了这个:
$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'
)
)
我得到的:
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();
阵列节点内存在不必要的原型。我还向数组节点添加了
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();
是的,但是如果没有protype(),我就不能添加新值,比如在我的示例
foo:bar
和hello:world
中。错误InvalidConfigurationException-acme下无法识别的选项“foo,hello”。模板
非常多。通过这样做,我无法向数组中添加更多值,但如果没有protype(),我无法添加新值,就像我的示例foo:bar
和hello:world
。acme下的错误InvalidConfigurationException-无法识别的选项“foo,hello”。模板被丢弃通过这样做,我无法向arrayHi@AlexisWbr添加更多值,你找到答案了吗?我使用了一种解决方法,但仍然没有找到任何解决方案@mmmmHi@AlexisWbr,你找到答案了吗?我使用了一种变通方法,但仍然没有找到任何解决方案@mmmm