Afficher les erreurs d’un formulaire dans l’ordre d’apparition des champs.

Posted by on Déc 10, 2012 in Drupal, PHP | No Comments

Récemment pour les besoins d’un projet on m’a demandé d’afficher les erreurs générés par un formulaire dans l’ordre d’apparition des champs. C’est certainement quelque chose que vous allez être amené à faire aussi, et cela demande un peu de recherche  (je parle ici du cas d’un formulaire créée avec du code et non par l’interface).

Lorsque l’on affiche le tableau $form qui contient le formulaire à afficher sur la page, on se rend compte que les erreurs générés par le formulaire s’affichent dans l’ordre des éléments du tableau. Il est donc possible de modifier cet ordre pour modifier l’affichage. Modifier l’ordre des cases du tableau $form peut être fait de plein de manière, mais je vais vous donner ce qui selon moi et la méthode la plus propre et logique.

Le but étant d’avoir le même ordre dans le tableau $form que celui de l’affichage du formulaire, nous allons trier le tableau en fonction du critère #weight. Ce critère permet de positionner un champs dans un formulaire par rapport aux autres, les poids faibles s’affichant avant les poids forts. Le principe et donc de définir les poids de tous les éléments du tableau et de trier celui-ci ensuite avec un uasort.

Voici un exemple :

Ici le champ date s’affichera avant le champ titre et ses erreurs également.