<?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>Elementos y Decoradores de Dojo Form</title>

    <para>
        Sobre la base de los ayudantes de vista dijit
        <link linkend="zend.dojo.view.dijit"/>
        , 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
                <methodname>Zend_Dojo::enableForm()</methodname>
                . 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
                <methodname>Zend_Dojo::enableForm()</methodname>
                .
            </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
                <methodname>Zend_Dojo::enableForm()</methodname>
                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
            <methodname>Zend_Dojo::enableForm()</methodname>
            .
            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>
