Utilisation de Zend_Form

Cet article s’adresse à tous ceux qui débute avec le Zend framework et qui souhaitent utiliser le composant intégré Zend_Form.

Ce composant présente de multiples avantages

  • ré-utilisation aisée d’un même formulaire.
  • dissociation des données et de la présentation.
  • vérification automatique des données via les validators intégrés au framework.
  • possibilité d’utiliser les decorators afin de maîtriser la présentation du formulaire.
  • internationalisation simple de vos formulaires avec le composant Zend_Translate, qui peut prendre en charge
    • - la traduction des labels de vos champs
    • -la traduction des messages d’erreurs envoyés par les validators (si vous y avez recours)

Pré requis

  • utilisation du framework en mode MVC
  • notions HTML et CSS !

Je n’aborderais ici que brièvement les décorateurs, je trouve personnellement leur utilisation peu intuitive et donc très handicapante lorsque je souhaite styliser mes formulaires, ou encore que je me trouve confronté à des formulaires très complexes. Je précise tout de même ici qu’il y a tout ce qu’il faut pour résoudre ces problèmes, mais je préfère tout de même utiliser les fonctionnalités de ce composant les plus liées aux données.

  • Introduction

    • Étendre Zend_Form
    • Une méthode pour tout mettre en place
    • Définir les champs de votre formulaire

Introduction

Étendre Zend_Form

Basiquement, la solution la plus simple consiste à créer une classe de formulaire étendant la classe Zend_Form afin de profiter de toutes ses fonctionnalités et de pouvoir simplement créer un formulaire en appelant cette classe.

class My_UserForm extends Zend_Form // déclaration de notre classe de formulaire
{
}
 
$userForm = new UserForm(); // instanciation de notre classe de formulaire personnalisée
$this->view->form = $userForm; // passage du formulaire à la vue

Une méthode pour tout mettre en place

Ensuite, nous pouvons définir tout un ensemble d’options pour notre formulaire dans la méthode init() héritée de Zend_Form qui sera appelée automatiquement lorsque nous créerons notre formulaire

class My_UserForm extends Zend_Form // déclaration de notre classe de formulaire
{
	function init()
	{
	}
}

Définir les champs de votre formulaire

Pour ajouter des champs dans le formulaire, il nous suffit d’y attacher des éléments de type Zend_Form_Element, il en existe un certain nombre de base, sachant qu’il est bien sur possible de créer votre propre classe si les éléments embarqués avec le framework ne suffisait pas à satisfaire pas vos besoins. Tout se fait au sein de la méthode init();

class My_UserForm extends Zend_Form // déclaration de notre classe de formulaire
{
	function init()
	{
		$myField = new Zend_Form_Element_Text('myFieldName');
		$this->addElement($myField);
	}
}

Pour créer un nouveau champ, vous aurez donc souvent recours à un Zend_Form_Element_[type] ou type peut être par exemple Text, Textarea, Submit, File, Select…
myFieldName définit la valeur qui sera utilisée pour les attributs id et name de votre champ. Quant à la méthode addElement(), elle parle d’elle même, elle ajoute le champ au formulaire, il existe aussi addElements() à qui il faudra cette fois passer un tableau.

Laisser un commentaire