# 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.