# Decoradores de Forms Específicos de Dijit

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.

Todos los decoradores dijit buscan la propiedad dijitParams del elemento que va a ser decorado, y mandarlos como un array `$params` 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.

## Decorador DijitElement

Al igual que el decorador ViewHelper , DijitElement espera una propiedad del helper 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 dijitParams (el valor de esa clave debe ser un array asociativo de opciones).

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

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

### Uso del Decorador DijitElement

    $element->setDecorators(array(
        'DijitElement',
        'Errors',
        'Label',
        'ContentPane',
    ));

## Decorador DijitForm

El decorador DijitForm es muy similar al Form decorator ; de hecho, básicamente puede ser utilizado de manera intercambiable con él, ya que utiliza el mismo nombre de ayudante de vista ('form').

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.

## Decoradores basados en DijitContainer

El decorador `DijitContainer` es en realidad una clase abstracta desde la cual derivan una variedad de otros decoradores. Ofrece la misma funcionalidad de DijitElement , 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.

La siguiente es una lista de decoradores que heredan de `DijitContainer` :

- AccordionContainer

- AccordionPane

- BorderContainer

- ContentPane

- SplitContainer

- StackContainer

- TabContainer

### Uso del Decorador DijitContainer

    // 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',
    ));