<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15103 -->
<!-- Reviewed: no -->
<sect2 id="zend.dojo.form.decorators">
    <title>Decoradores de Forms Específicos de Dijit</title>

    <para>
        La mayoría de los elementos de formularios pueden usar el decorador 
        DijitElement, que tomará los parámetros dijit de los elementos, y 
        pasarán estos y otros metadatos al ayudante de vista especificado por 
        el elemento. 
        Sin embargo, para decorar los forms, sub forms, y grupos de visualización, 
        hay un conjunto de decoradores correspondientes a los diversos 
        esquemas dijit.
    </para>

    <para>
        Todos los decoradores dijit buscan la propiedad <methodname>dijitParams</methodname> 
        del elemento que va a ser decorado, y mandarlos como un array <methodname>$params</methodname> 
        al ayudante de vista dijit que se está usando. Luego, éstos son separados de 
        cualquiera de las otras propiedades para evitar la duplicación de 
        información.
    </para>

    <sect3 id="zend.dojo.form.decorators.dijitElement">
        <title>Decorador DijitElement</title>

        <para>
            Al igual que <link linkend="zend.form.standardDecorators.viewHelper"> 
            el decorador ViewHelper</link>, DijitElement espera una propiedad  
            del <methodname>helper</methodname> en el elemento que luego usará como el 
            ayudante de vista cuando lo renderice. 
            Los parámetros Dijit suelen ser arrastrados directamente desde el 
            elemento, pero también pueden ser pasados como opciones vía 
            la clave <methodname>dijitParams</methodname> (el valor de esa clave debe ser 
            un array asociativo de opciones).
        </para>

        <para>
            Es importante que cada elemento tenga un único ID (como traído desde 
            el método <methodname>getId()</methodname> del elemento). 
            Si se detectan duplicados dentro del ayudante de vista <methodname>dojo()</methodname>, 
            el decorador accionará un aviso, pero luego creará un único ID 
            añadiéndole lo que devuelve <methodname>uniqid()</methodname> al identificador.
        </para>

        <para>
            El uso estándar es simplemente asociar este decorador como el primero 
            de su cadena de decoradores, sin opciones adicionales.
        </para>

        <example id="zend.dojo.form.decorators.dijitElement.usage">
            <title>Uso del Decorador DijitElement</title>

             <programlisting language="php"><![CDATA[
$element->setDecorators(array(
    'DijitElement',
    'Errors',
    'Label',
    'ContentPane',
));
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.decorators.dijitForm">
        <title>Decorador DijitForm</title>

        <para>
            El decorador DijitForm es muy similar al <link
                linkend="zend.form.standardDecorators.form">Form
                decorator</link>; de hecho, básicamente puede ser utilizado de  
            manera intercambiable con él, ya que utiliza el mismo nombre de 
            ayudante de vista ('form').
        </para>

        <para>
            Dado que dijit.form.Form no requiere ningún parámetro dijit para la 
            configuración, la principal diferencia es que el ayudante de vista 
            dijit del form exige que se pase un DOM ID para garantizar que la 
            creación programática del dijit pueda trabajar. 
            El decorador garantiza esto, pasando el nombre del form como el 
            identificador.
        </para>
    </sect3>

    <sect3 id="zend.dojo.form.decorators.dijitContainer">
        <title>Decoradores basados en DijitContainer</title>

        <para>
            El decorador <methodname>DijitContainer</methodname> es en realidad una clase 
            abstracta desde la cual derivan una variedad de otros decoradores. 
            Ofrece la misma funcionalidad de <link
                linkend="zend.dojo.form.decorators.dijitElement">DijitElement</link>,
            con el añadido del soporte para títulos. Muchos esquemas de dijits 
            requieren o pueden utilizar un título; DijitContainer utilizará la  
            propiedad del elemento leyenda (legend) si está disponible, y también pueden 
            utilizar tanto 'legend' o 'title' como opción del decorador, si es 
            pasada. 
            El título será traducido si un adaptador de traducción con su 
            correspondiente traducción está presente.
        </para>

        <para>
            La siguiente es una lista de decoradores que heredan de  
            <methodname>DijitContainer</methodname>:
        </para>

        <itemizedlist>
            <listitem><para>AccordionContainer</para></listitem>
            <listitem><para>AccordionPane</para></listitem>
            <listitem><para>BorderContainer</para></listitem>
            <listitem><para>ContentPane</para></listitem>
            <listitem><para>SplitContainer</para></listitem>
            <listitem><para>StackContainer</para></listitem>
            <listitem><para>TabContainer</para></listitem>
        </itemizedlist>

        <example id="zend.dojo.form.decorators.dijitContainer.usage">
            <title>Uso del Decorador DijitContainer</title>

             <programlisting language="php"><![CDATA[
// Use un TabContainer para su form:
$form->setDecorators(array(
    'FormElements',
    array('TabContainer', array(
        'id'          => 'tabContainer',
        'style'       => 'width: 600px; height: 500px;',
        'dijitParams' => array(
            'tabPosition' => 'top'
        ),
    )),
    'DijitForm',
));

// Use un ContentPane en su sub form (que puede utilizarse con todos, pero no
// con AccordionContainer):
$subForm->setDecorators(array(
    'FormElements',
    array('HtmlTag', array('tag' => 'dl')),
    'ContentPane',
));
]]></programlisting>
        </example>
    </sect3>
</sect2>
<!--
vim:se ts=4 sw=4 et:
-->
