# Les éléments de formulaire et les décorateurs Dojo

Bâtie sur les aides de vues dijit, la famille des classes Zend_Dojo_Form fournit la possibilité d'utiliser les Dijits nativement dans vos formulaires.

Il existe trois options pour utiliser les éléments de formulaires Dojo avec vos formulaires :

- Utilisez Zend_Dojo::enableForm(). Ceci ajoutera, de manière récursive, les chemins de plugin des éléments et des décorateurs pour tous les éléments de formulaires attachés. De plus, ceci active dojo dans l'objet de vue. Notez, cependant, que tout sous-formulaire que vous attacherez après cet appel devront eux aussi faire leur appel à Zend_Dojo::enableForm().

- Utilisez les implémentations de formulaires et sous-formulaires spécifiques à Dojo, respectivement Zend_Dojo_Form et Zend_Dojo_Form_SubForm. Ceux-ci peuvent être utilisés en lieu et place de Zend_Form et Zend_Form_SubForm, ils contiennent tous les chemins appropriés des éléments et décorateurs, ils paramètrent une classe par défaut pour les DisplayGroup spécifique à Dojo et activent dojo dans l'objet de vue.

- En dernier, et le plus pénible, vous pouvez régler vous même les chemins appropriés vers les décorateurs et les éléments, régler la classe de DisplayGroup par défaut, et activer dojo dans l'objet de vue. Puisque Zend_Dojo::enableForm() fait déjà ceci, il n'y a que peu de raisons d'utiliser cette voie.

Activation de Dojo dans vos formulaires existants

"Mais attendez," vous allez me dire ; "j'étends déjà Zend_Form avec ma propre classe de formulaire personnalisé ! Comment puis-je activer Dojo ?'"

Premièrement, et sans doute le plus simple, étendez Zend_Dojo_Form au lieu de Zend_Form, et mettez à jour tous les endroits où vous intanciez Zend_Form_SubForm en le remplaçant par Zend_Dojo_Form_SubForm.

Une seconde approche consiste en un appel à Zend_Dojo::enableForm() dans la méthode init() de vos formulaires ; quand la définition du formulaire est complète, bouclez à travers tous les sous-formulaires pour y activer dojo pour chacun :

    class My_Form_Custom extends Zend_Form
    {
        public function init()
        {
            // Activer Dojo pour le formulaire :
            Zend_Dojo::enableForm($this);

            // ... continuez la définition du formulaire ici

            // Activer Dojo pour tous les formulaires :
            foreach ($this->getSubForms() as $subForm) {
                Zend_Dojo::enableForm($subForm);
            }
        }
    }

L'utilisation des éléments de formulaires et les décorateurs spécifiques à Dijit est identique à l'utilisation de tous autres éléments de formulaires ou décorateurs.