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