mat*_*ndr 14 configuration symfony
我正在尝试定义一个Configuration
对象.我已成功定义了一个数组原型节点(如security.firewalls
).我的prototye数组有一个必需的元素,但我想允许在需要时将任意参数添加到每个数组.
我的问题是,如何允许将额外的,未定义的元素添加到每个原型数组中?
这是我的配置:
acme_widget:
handlers:
handler_one:
service: handler.one.service
handler_two:
service: handler.two.service
extra_array:
- Extra 1
- Extra 2
extra_scalar: Extra 3
Run Code Online (Sandbox Code Playgroud)
这是我的班级建设者:
/**
* Generates the configuration tree.
*
* @return TreeBuilder
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder;
$rootNode = $treeBuilder->root('acme_widget');
$rootNode
->children()
->arrayNode('handlers')
->useAttributeAsKey('service')
->prototype('array')
->children()
->scalarNode('service')->isRequired()->end()
->booleanNode('enabled')->defaultTrue()->end()
->end()
->end()
->end()
->end()
;
return $treeBuilder;
}
Run Code Online (Sandbox Code Playgroud)
我收到"InvalidConfigurationException:无法识别的选项".
Adr*_*ult 21
我只想添加一个变量(可以包含任何东西)节点"额外":
->scalarNode('service')->isRequired()->end()
->booleanNode('enabled')->defaultTrue()->end()
->variableNode('extra')->end()
Run Code Online (Sandbox Code Playgroud)
您的配置将如下所示:
acme_widget:
handlers:
handler_one:
service: handler.one.service
handler_two:
service: handler.two.service
extra:
array:
- Extra 1
- Extra 2
scalar: Extra 3
Run Code Online (Sandbox Code Playgroud)