使用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