<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.dojo.form" xmlns:xi="http://www.w3.org/2001/XInclude">
    <title>Les éléments de formulaire et les décorateurs Dojo</title>

    <para>
        Bâtie sur les
        <link linkend="zend.dojo.view.dijit">aides de vues dijit</link>, la famille des classes
        <classname>Zend_Dojo_Form</classname> fournit la possibilité d'utiliser les Dijits
        nativement dans vos formulaires.
    </para>

    <para>
        Il existe trois options pour utiliser les éléments de formulaires Dojo avec vos
        formulaires&#160;:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                Utilisez <methodname>Zend_Dojo::enableForm()</methodname>. 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
                <emphasis>après</emphasis> cet appel devront eux aussi faire leur appel à
                <methodname>Zend_Dojo::enableForm()</methodname>.
            </para>
        </listitem>

        <listitem>
            <para>
                Utilisez les implémentations de formulaires et sous-formulaires spécifiques à
                Dojo, respectivement <classname>Zend_Dojo_Form</classname> et
                <classname>Zend_Dojo_Form_SubForm</classname>. Ceux-ci peuvent être utilisés en
                lieu et place de <classname>Zend_Form</classname> et
                <classname>Zend_Form_SubForm</classname>, 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.
            </para>
        </listitem>

        <listitem>
            <para>
                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
                <methodname>Zend_Dojo::enableForm()</methodname> fait déjà ceci, il n'y a que peu de
                raisons d'utiliser cette voie.
            </para>
        </listitem>
    </itemizedlist>

    <example id="zend.dojo.form.enable">
        <title>Activation de Dojo dans vos formulaires existants</title>

        <para>
            "Mais attendez," vous allez me dire&#160;; "j'étends déjà
            <classname>Zend_Form</classname> avec ma propre classe de formulaire
            personnalisé&#160;! Comment puis-je activer Dojo&#160;?'"
        </para>

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

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

        <programlisting language="php"><![CDATA[
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);
        }
    }
}
]]></programlisting>

    </example>

    <para>
        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.
    </para>

    <xi:include href="Zend_Dojo-Form-Decorators.xml">
        <xi:fallback>
            <xi:include href="../../en/module_specs/Zend_Dojo-Form-Decorators.xml" />
        </xi:fallback>
    </xi:include>
    <xi:include href="Zend_Dojo-Form-Elements.xml">
        <xi:fallback>
            <xi:include href="../../en/module_specs/Zend_Dojo-Form-Elements.xml" />
        </xi:fallback>
    </xi:include>
    <xi:include href="Zend_Dojo-Form-Examples.xml">
        <xi:fallback>
            <xi:include href="../../en/module_specs/Zend_Dojo-Form-Examples.xml" />
        </xi:fallback>
    </xi:include>
</sect1>