Предоставление дополнительных параметров 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".
Ответы
Ответ 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