<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15103 -->
<!-- Reviewed: no -->
<sect1 id="zend.dojo.form" xmlns:xi="http://www.w3.org/2001/XInclude">
    <title>Elementos y Decoradores de Dojo Form</title>

    <para>
        Sobre la base de los ayudantes de vista dijit 
        <link linkend="zend.dojo.view.dijit"></link>,  
        la familia de clases <classname>Zend_Dojo_Form</classname> ofrece la 
        posibilidad de utilizar Dijits nativamente en sus formularios.
    </para>

    <para>
        Hay tres opciones para utilizar los elementos de Dojo form con sus 
        formularios:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                Use <classname>Zend_Dojo::enableForm()</classname>. Esto le 
                permitirá añadir recursivamente paths de plugins para 
                decoradores y elementos de todos los items de forms adjuntos. 
                Además, el objeto vista será habilitado para Dojo. 
                Note, sin embargo, que cualquier subformulario que agregue 
                <emphasis>después</emphasis> de esta llamada también 
                tendrá que ser pasado mediante 
                <classname>Zend_Dojo::enableForm()</classname>.
            </para>
        </listitem>

        <listitem>
            <para>
                Utilice las implementaciones específicas de Dojo para formularios y 
                subformularios, <classname>Zend_Dojo_Form</classname> y
                <classname>Zend_Dojo_Form_SubForm</classname> respectivamente. 
                Éstas pueden utilizarse como reemplazantes drop-in para 
                <classname>Zend_Form</classname> y 
                <classname>Zend_Form_SubForm</classname>, contener todos los 
                paths apropiados de los decoradores y elementos, establecer 
                una clase DisplayGroup por defecto específica, y habilitar la vista
				para Dojo. 
            </para>
        </listitem>

        <listitem>
            <para>
                Por último, y lo más tedioso, puede establecer por sí mismo el 
                path apropiado para el decorador y para el elemento, establecer 
                por defecto la clase DisplayGroup, y habilitar la vista para Dojo. 
                Dado que <classname>Zend_Dojo::enableForm()</classname> ya 
                hizo esto, hay pocas razones para seguir esta vía.
            </para>
        </listitem>
    </itemizedlist>

    <example id="zend.dojo.form.enable">
        <title>Habilitando Dojo en sus formularios existentes</title>

        <para>
            "Pero espere", podría decir; "Ya extendí <classname>Zend_Form</classname> 
            con mi propia clase personalizada de form! ¿Cómo puede habilitarlo para Dojo?"
        </para>

        <para>
            En primer lugar, y lo más fácil, simplemente cambie de extender 
            <classname>Zend_Form</classname> a extender 
            <classname>Zend_Dojo_Form</classname>, y actualizar todos los 
            lugares donde se instancie a
            <classname>Zend_Form_SubForm</classname> para instanciar a
            <classname>Zend_Dojo_Form_SubForm</classname>.
        </para>

        <para>
            Un segundo enfoque es llamar al método <methodname>init()</methodname> dentro 
            de sus forms personalizados 
            <classname>Zend_Dojo::enableForm()</classname>. Cuando la definición 
            del formulario está completa, mediante un loop habilite todos los 
            SubForms de Dojo:
        </para>

         <programlisting language="php"><![CDATA[
class My_Form_Custom extends Zend_Form
{
    public function init()
    {
        // Dojo habilita el form:
        Zend_Dojo::enableForm($this);

        // ... continuar con la definición del form desde aquí

        // Dojo habilita todos los sub forms:
        foreach ($this->getSubForms() as $subForm) {
            Zend_Dojo::enableForm($subForm);
        }
    }
}
]]></programlisting>
    </example>

    <para>
        El uso de los decoradores y elementos específicos de dijit form es como 
        usar cualquier otro decorador o elemento de formularios.
    </para>

    <xi:include href="Zend_Dojo-Form-Decorators.xml" />
    <xi:include href="Zend_Dojo-Form-Elements.xml" />
    <xi:include href="Zend_Dojo-Form-Examples.xml" />
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
