使用Symfony2'时,允许在配置数组中使用额外的未定义选项;s配置类
我正在尝试定义一个使用Symfony2'时,允许在配置数组中使用额外的未定义选项;s配置类,symfony,configuration,Symfony,Configuration,我正在尝试定义一个配置对象。我已经成功地定义了一个数组原型节点(如security.firewalls)。我的prototye数组有一个必需的元素,但如果需要的话,我想允许向每个数组添加任意参数 我的问题是,如何允许向每个原型阵列添加额外的未定义元素 这是我的配置: acme_widget: handlers: handler_one: service: handler.one.service handler_two:
配置
对象。我已经成功地定义了一个数组原型节点(如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
下面是我的类生成器:
/**
* 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;
}
我得到了“InvalidConfigurationException:无法识别的选项”。我只想添加一个变量(可以包含任何内容)节点“extra”: 您的配置将如下所示:
acme_widget:
handlers:
handler_one:
service: handler.one.service
handler_two:
service: handler.two.service
extra:
array:
- Extra 1
- Extra 2
scalar: Extra 3
variableNode()
正是我想要的,谢谢。可惜symfony文档中缺少了它:(另一种方法是在->prototype('array')
上调用->ignoreExtraKeys(false)
。
acme_widget:
handlers:
handler_one:
service: handler.one.service
handler_two:
service: handler.two.service
extra:
array:
- Extra 1
- Extra 2
scalar: Extra 3