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 :
Et en cas d'erreur :
ou
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
|