J'ai créé une classe Configuration et construit un arbre qui définit ma configuration dans cette classe, mais je suppose que c'est très moche alors ma question est de trouver une solution pour simplifier mes cals?Treebuilder Validation pour le fichier yml
<?php
namespace Myapp\Mybundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
/**
* {@inheritDoc}
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('em_profession');
$rootNode
->children()
->arrayNode('region')
->isRequired()
->requiresAtLeastOneElement()
->useAttributeAsKey('id')
->prototype('array')
->children()
->scalarNode('label')
->isRequired()
->cannotBeEmpty()->defaultValue('em_profession_label')->end()
->arrayNode('childrens')
->isRequired()
->requiresAtLeastOneElement()
->useAttributeAsKey('id')
->prototype('array')
->children()
->scalarNode('label')->end()
->arrayNode('childrens')
->isRequired()
->requiresAtLeastOneElement()
->useAttributeAsKey('id')
->prototype('array')
->children()
->scalarNode('label')->end()
->arrayNode('childrens')
->isRequired()
->requiresAtLeastOneElement()
->useAttributeAsKey('id')
->prototype('array')
->children()
->scalarNode('label')->end()
->arrayNode('childrens')
->isRequired()
->requiresAtLeastOneElement()
->useAttributeAsKey('id')
->prototype('array')
->children()
->scalarNode('label')->end()
->arrayNode('childrens')
->isRequired()
->requiresAtLeastOneElement()
->useAttributeAsKey('id')
->prototype('array')
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
->end()
;
return $treeBuilder;
}
Ma configuration fonctionne bien, mais il est très grand donc je wich pour minimiser pour simplifier et d'arrêter la répétition du code ...
modifier
OK Je sais cette solution mais je suppose que je ne peux pas l'appliquer dans ma configuration, par exemple dans le fichier de configuration Twig ils utilisent une fonction personnalisée à la fin de la classe après "-> end()" mais dans ma configuration je l'utilise dans "prototype()" avoir beaucoup de répétition de code mais enfant à l'intérieur de l'enfant à l'intérieur de l'enfant ... il est donc difficile de le minimiser correctement ...
OK Je connais cette solution mais je ne peux pas l'appliquer dans ma configuration, par exemple dans le fichier de configuration Twig ils utilisent une fonction personnalisée en fin de classe après "-> end()" mais dans ma configuration je l'utilise à l'intérieur de "prototype()" j'ai aussi beaucoup de répétition de code mais l'enfant à l'intérieur de l'enfant à l'intérieur de l'enfant ... il est donc difficile de le minimiser correctement ... – Nll