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)

Pour donner un apper�u de l'utilit� de PEAR au sein d'un d�veloppement PHP, nous allons voir une application on ne peut plus pratique : l'utilisation de package PEAR::HTML_QuickForm. Celui-ci va nous permettre de cr�er rapidement un formulaire, et de ne pas avoir � nous soucier des routines de test et de validation, celles-ci �tant automatiquement prises en compte par QuickForm, que ce soit cot� client (JavaScript) ou cot� serveur (PHP, donc).

Pour utiliser, il vous faudra installler le package HTML_QuickForm, et �tre s�r d'avoir aussi le package HTML_Common, qui fournit les m�thodes de gestion des balises et attributs HTML.

Plongeons tout de suite dans un exemple de code : un formulaire d'inscription o� l'utilisateur doit entre son mail dans un champ texte, et entrer une seconde fois ce mail pour le confirmer. En quelques lignes, QuickForm s'occupera de comparer les deux champs et d'envoyer un message d'erreur � l'utilisateur...

(fichier inscription.php)
<?php
require_once ('HTML/QuickForm.php');

$form = new HTML_QuickForm();

function compMail($element, $mail2)
��{
��global $form;
��$mail1 = $form->getElementValue('mail1');
��return ($mail1 == $mail2);
��}

$form->registerRule('compare', 'function', 'compMail');

$form->addElement('text', 'mail1', 'Votre mail');
$form->addElement('text', 'mail2', 'Confirmez votre mail');
$form->addElement('submit', 'submit', 'Envoyer');

$form->addRule('mail1', 'Entrez votre mail', 'required');
$form->addRule('mail1', 'Votre mail est invalide', 'email');
$form->addRule('mail2', 'Confirmez votre mail', 'required');
$form->addRule('mail2', 'Votre mail est invalide', 'email');

$form->addRule('mail2', 'Les mails ne sont pas identiques', 'compare', 'function');

if ($form->validate())
��{
��$form->freeze();
��}
$form->display();
?>

Apr�s avoir avoir instanci� le classe HTML_QuickForm() sous le nom de $form, nous construisons une fonction compMail() qui renverra 1 si les deux champs sont identiques. Nous r�cup�rons le contenu entr� par l'utilisateur � l'aide de la m�thode getElementValue('nomDuChamp').

Nous d�finissons ensuite une r�gle de validation : compare fera appel � compMail(), et est d�finie via la m�thode registerRule('nomRegle', 'typeRegle', 'donn�e').

addElement() nous permet ensuite de cr�er les �l�ments graphiques du formulaire. Ici, nous cr�ons un champs texte appell� mail1 ou mail2, avec une texte pour description. Le type de l'�l�ment est d�fini comme en HTML : submit ou reset pour un bouton, text ou password pour un champ texte, checkbox pour une case � cocher... Il faut bien entendu faire attention � ce que chaque �l�ment ait un identifiant unique, sinon QuickForm n'affichera que le premier �l�ment ayant un identifiant donn�. Notons aussi qu'il n'est pas toujours n�cessaire de mettre une description : c'est juste tr�s recommand� (surtout pour les boutons). Ainsi un peut ajouter un bouton radio simple avec le code suivant :

$form->addElement('radio', 'head');

Page 1 | 2

[ Xavier Borderie,,� JDNet
Accueil | Haut de page