Подтвердить что ты не робот

Предоставление дополнительных параметров undefined в массиве конфигурации при использовании Symfony2 Configuration class

Я пытаюсь определить объект Configuration. Я успешно определил прототип массива node (например, security.firewalls). Мой массив prototye имеет необходимый элемент, но я хочу, чтобы при необходимости добавлялись любые параметры к каждому массиву.

Мой вопрос: как я могу добавить дополнительные элементы undefined для каждого массива прототипов?

Здесь моя конфигурация:

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: Unrecognized options".

4b9b3361

Ответ 1

Я бы просто добавил переменную (может содержать что угодно) node "extra":

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

Ваша конфигурация будет выглядеть так:

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