octobre
2008
Voici un petit billet qui montre comment utiliser Zend_Form, hors contexte MVC de manière très très simple
$form = new Zend_Form();
$login = new Zend_Form_Element_Text('login');
$login->setRequired(true);
$login->addValidator(new Zend_Validate_StringLength(1,10));
$login->setLabel('Login');
$login->setAttrib('size', 5);
$pass = new Zend_Form_Element_Password('pass');
$pass->setRequired(true);
$pass->setLabel('password');
$pass->setAttrib('size', 5);
$go = new Zend_Form_Element_Submit('go!');
$form->addElement($login);
$form->addElement($pass);
$form->addElement($go);
$form->setAction('formlogin.php');
$form->setMethod('POST');
$form->setView(new Zend_View);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if(!$form->isValid($_POST)) {
$form->populate($_POST);
}else{
traitement();
}
}
echo $form;
function traitement()
{
// do the stuff here :)
}
?>
Nous affectons au formulaire Zend_Form des éléments, qui sont des objets Zend_Form_Element_*
Chaque élément peut se voir attribuer un ou plusieurs validateurs, que l’on peut configurer.
L’appel setRequired() ajoute un validateur qui vérifie la présence de l’élément une fois le formulaire envoyé.
Ensuite, il faut passer une instance de Zend_View à Zend_Form, car ses éléments utilisent des aides de vue Zend_View_Helper_*, accessibles via Zend_View, pour créer les champs de formulaire.
La validation du formulaire est alors un jeu d’enfant, sa méthode isValid() prend en paramètre tout le tableau $_POST, et valide chacune des données avec les validateurs spécifiés dans chaque élément !
Si le formulaire n’est pas valide, sa méthode populate() permet de peupler chaque champ avec la valeur qui a été envoyée, ce qui évite à l’utilisateur de devoir tout saisir.
En plus de celà, les messages d’erreurs des validateurs vont s’afficher à coté de chaque champ concerné.
En dernier lieu, on affiche le formulaire, avec un simple echo sur son instance.
C’est quand même plus simple et plus structuré que de le faire à la main, et encore, on n’a pas vu avec quelle simplicité on récupère les données validées du formulaire, pour les passer à un objet métier qui va les enregistrer typiquement en base de données.
On n’a pas non plus parlé de javascript ou d’Ajax, qui n’est pas très complexe à ajouter à ce formulaire.
Alors, si vous faites encore vos formulaires à la main, pourquoi ne pas passer à Zend_Form et progressivement à Zend_Controller ?
Commentaires récents
Archives
- novembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007