Info utile #1 – Les fonctions de validation

Voilà un billet d’un style un peu différent, plus court qu’à l’habitude, à propos d’une information bête au sujet des fonctions de validation qui m’a fait perdre une heure hier et qui aurait pu être évitée.

Si vous vous retrouvez dans la situation où vous ajoutez une fonction de validation sur un formulaire mais que cette fonction n’est pas exécutée (et que bien sûr vous avez vérifié par trois fois la syntaxe de votre code), prenez le temps de regarder le détail du formulaire.

En fait il faut savoir que lorsque vous cliquez sur un élément de formulaire de type bouton, ses fonctions de validation et d’exécution sont exécutée et seulement celles de ce bouton. Ce qui au final est logique car cela vous permet d’avoir un comportement différent par bouton sans avoir de risque d’interférences entre les fonctions de validation / exécution de votre bouton et celles du formulaire global. Le détail des mécanismes de ces fonctions à exécuter se trouve dans la fonction form_execute_handlers().

A noter également qu’il existe un attribut du Form API qui a été introduit dans Drupal 7 qui permet de limiter les valeurs à contrôler lors de la soumission du formulaire, il s’agit de l’attribut #limit_validation_errors. Cet attribut prends un tableau comme valeur avec la liste des entrées du $form_state[‘values’] qui doivent être validées. Pratique pour contourner un champ obligatoire lorsque l’on a un bouton qui supprime un noeud par exemple.