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.