# Elementos y Decoradores de Dojo Form

Sobre la base de los ayudantes de vista dijit , la familia de clases Zend_Dojo_Form ofrece la posibilidad de utilizar Dijits nativamente en sus formularios.

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

- Use Zend_Dojo::enableForm() . 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 después de esta llamada también tendrá que ser pasado mediante Zend_Dojo::enableForm() .

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

- 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 Zend_Dojo::enableForm() ya hizo esto, hay pocas razones para seguir esta vía.

Habilitando Dojo en sus formularios existentes

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

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

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

    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);
            }
        }
    }

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