Allowing extra, undefined options in a config array when using Symfony2's Configuration class

configuration, symfony

Solution

I would just add a variable (can contain anything) node "extra":

->scalarNode('service')->isRequired()->end()
->booleanNode('enabled')->defaultTrue()->end()
->variableNode('extra')->end()

Your config would then look like:

acme_widget:
    handlers:
        handler_one:
            service: handler.one.service
        handler_two:
            service: handler.two.service
            extra:
                array:
                    - Extra 1
                    - Extra 2
                scalar: Extra 3

Problem

I'm trying to define a `Configuration` object. I have successfully defined an array prototype node (like `security.firewalls`). My prototye array has an required element but I want to allow arbitrary parameters to be added to each array if needed. My question is, how can I allow extra, undefined elements to be added to each prototype array? Here's my config: ``` 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 ``` Here's my class builder: ``` /** * 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; } ``` I'm getting "InvalidConfigurationException: Unrecognized options".

Original source