Luc*_*cas 1 php configuration bundle symfony symfony4
我的 Symfony4 捆绑配置有问题。我有一个配置类:
$rootNode
->children()
->arrayNode('mapping')
->useAttributeAsKey('code')
->prototype('scalar')->end()
->defaultValue(['default' => 'test'])
->end()
.....
->end();
Run Code Online (Sandbox Code Playgroud)
这将返回默认配置,例如:
array(1) {
["default"]=> string(4) "test"
}
Run Code Online (Sandbox Code Playgroud)
但是当我添加配置文件时:
bundle:
mapping:
test: newvalue
test2: newvalue2
Run Code Online (Sandbox Code Playgroud)
我得到一个配置:
array(2) {
["test"]=> string(8) "newvalue"
["test2"]=> string(9) "newvalue2"
}
Run Code Online (Sandbox Code Playgroud)
但我希望合并这两个配置以获得:
array(3) {
["default"]=> string(4) "test"
["test"]=> string(8) "newvalue"
["test2"]=> string(9) "newvalue2"
}
Run Code Online (Sandbox Code Playgroud)
如何设置此默认值以与提供的配置合并?当然,我想让“默认”配置被覆盖,但默认被合并。
我在文档上找不到任何解决方案https://symfony.com/doc/current/components/config/definition.html#array-node-options
请帮忙 :)
小智 6
为此,您必须更深入地定义数组配置:
$treeBuilder
->children()
->arrayNode('mapping')
->ignoreExtraKeys()
->addDefaultsIfNotSet()
->children()
->scalarNode('default')
->defaultValue('test)
->end()
->end()
->end()
->end()
Run Code Online (Sandbox Code Playgroud)
addDefaultsIfNotSet 将添加您的默认值。ignoreExtraKeys 允许您定义其他键,如示例中所示。最好完全配置按键,因为您可以更好地控制它们。