使用Symfony2,我知道如何使用Configuration.php文件通过config.yml设置可用于bundle的选项。但是,我不确定如何将一个选项设置为默认为另一个选项的值(或者如果这很容易实现)。
我正在寻找的是这样的配置:
->scalarNode('option_one')
->defaultValue('peanuts')
->cannotBeEmpty()
->end()
->scalarNode('option_two')
->defaultValue('%option_one%')
->end()
那样:
# config.yml
my_bundle:
set_one:
option_one: foo
option_two: bar
set_two:
option_one: baz
set_three: ~
对于set_one
,我们会将option_two
设置为bar
。
对于set_two
,option_two
将设置为baz
(通过默认设置将其与option_one
匹配)。
对于set_three
,option_one
和option_two
都将设置为默认值peanuts
。
也许我正在寻找错误的地方,但是......也许在配置过程中还有其他地方缺少'可以捕获值并根据其兄弟值(或更宽的配置)将其设置为默认值?
答案 0 :(得分:1)
validate()
的文档说(重点是我):
该表达式接收节点的值,必须返回它。 它可以修改它。
因此,您可以利用此功能根据需要根据其他值实际设置默认值。
->scalarNode('option_one')
->defaultValue('peanuts')
->cannotBeEmpty()
->end()
->scalarNode('option_two')
->defaultNull()
->end()
->validate()
->always(function(array $config) {
if (!$config['option_two']) {
$config['option_two'] = $config['option_one'];
}
return $config;
})
->end()
答案 1 :(得分:0)
你有两种可能性: