I am trying to integrate Symfony config component and have some trouble getting it to parse required YAML format. I can’t find a way for the Config component to accept simple key => value pairs from the YAML file.
My current tree builder for the “limits” section:
JavaScript
x
$treeBuilder = new TreeBuilder('limits');
$node = $treeBuilder->getRootNode();
foreach ($keys as $key) {
$node
->isRequired()
->children()
->arrayNode('comment')
->isRequired()
->requiresAtLeastOneElement()
->useAttributeAsKey('name', false)
->prototype('array')
->canBeDisabled()
->treatNullLike(['enabled' => false])
->children()
->integerNode('duration')->end()
->integerNode('limit')->end()
->arrayNode('thresholds')
->useAttributeAsKey('name', false)
->prototype('array')
->children()
->scalarNode('name')->end()
->integerNode('value')->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end();
}
return $node;
The yaml tree that I am already able to parse is as follows:
JavaScript
limits:
comment:
per_hour:
duration: 3600
limit: 100
thresholds:
key1:
value: 50
key2:
value: 60
And I want to modify it so I can write configuration like this:
JavaScript
limits:
comment:
per_hour:
duration: 3600
limit: 100
thresholds:
key1: 50
key2: 60
Any idea how I could modify the tree builder to get the required format?
thanks!
Advertisement
Answer
starting from your code, changing your thresholds
definition to this, should do what you expect :
JavaScript
->arrayNode('thresholds')
->useAttributeAsKey('name', false)
->prototype('integer')->end()
->end()