Avec l'arbre de configuration suivante:Arrêt du processeur de configuration Symfony 2 de l'ajout d'un tableau vide?
$rootNode
->fixXmlConfig('parameter')
->children()
->arrayNode('parameters')
->useAttributeAsKey('name')
->prototype('array')
->children()
->scalarNode('type')->end()
->scalarNode('value')->end()
->end()
->end()
->end()
->end();
... même si je ne précise pas la clé parameters
, Symfony ajoute un tableau vide:
$config = $processor->processConfiguration($configuration, array());
var_dump($config); // Output is array('parameters' => array())
Mais je veux la clé parameters
désactivé, absent, s'il n'y a pas de paramètres.
J'ai essayé de supprimer la clé (si elle est vide) dans beforeNormalization
, mais il ne fonctionne pas:
$rootNode
->beforeNormalization()
->always(function ($v) {
if(empty($v['parameters'])) {
unset($v['parameters']);
}
return $v;
})
Semble que, avec un tableau vide avant le rappel de normalisation est jamais exécutée.
Le problème est Je dois effectuer une validation dans la configuration elle-même, et j'ai besoin de vérifier si les paramètres sont vides ou non. – gremo
Il me semble que les rappels de normalisation et de validation ne sont pas exécutés si la clé de configuration n'est pas fournie. Vous pouvez ajouter 'isRequired()' à votre définition de noeud de tableau pour vous assurer que cette clé de configuration est fournie. Peut-être que cela peut aider? – gatisl