TUTORIELS 
PHP/PEAR : utilisation de HTML_QuickForm

Page 1 | 2

Le projet PEAR montre une partie de sa puissance et de son utilité au travers du package QuickForm, qui permet de créer et valider simplement des formulaires complexes.
 (25 juin 2003)
 

Nous ajoutons ensuite deux règles de validation aux champs mail1 et mail2, qui nous permettent de forcer la complétion de certains champs, avec addRule('identifiant du champ sur laquelle la règle est appliquée', 'message d'erreur si la règle n'est pas respectée', 'règle à respecter'). Les règles prédéfinies sont par exemple required (le champ est requis) ou email (le champs doit être un mail valide - cela nous évite d'avoir à utiliser les expressions régulières), comme nous avons utilisé ici, mais aussi lettersonly, numeric, maxlength, nopunctuation...

La vérification des mails étant prise automatiquement en compte par QuickForm, il ne nous reste plus qu'à déclarer la fonction qui va comparer le contenu des deux champs : nous ajoutons une nouvelle règle au champ mail2, qui renverra le message d'erreur "Les mails ne sont pas identiques si l'appel à la règle compare (donc la fonction compMail() déclarée plus haut) renvoi une valeur négative.

Il ne nous reste plus qu'à valider notre formulaire coté serveur avec $form->validate(), à geler les champs s'il est effectivement validé, puis à afficher le tout avec $form->display(). Le résultat de cet acabit :

*Votre mail
*Confirmez votre mail
 
* denotes required field

Et en cas d'erreur :

*Votre mail Votre mail est invalide
*Confirmez votre mail Confirmez votre mail
 
* denotes required field

ou

*Votre mail
*Confirmez votre mail Votre mail est invalide
 
* denotes required field

Comme vous pouvez le voir, QuickForm prend intégalement en charge l'affichage de tous les éléments (dont l'indication qu'un champ est nécessaire) et les tests. C'est réellement un outil simple et puissant, et qui peut rendre de nombreux services aux développeurs pressés. Il est évidemment possible de modifier le modèle d'affichage à l'aide certaines fonctions dédiés, comme setRequiredNotes() qui permet de changer le texte à afficher pour indiquer qu'un champ est requis :

$form->setRequiredNote('<span style="font-size:80%; color:#ff0000;">*</span><span style="font-size:80%;"> indique un champ requis</span>');

...et d'autres fonctions dédiées au travail sur le modèle HTML lui-même : setHeaderTemplate(), setFormTemplate()...

Page 1 | 2

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page