# Formular Elemente und Dekoratore für Dojo

Aufbauend auf den Dijit View Helfern bietet die Familie der Zend_Dojo_Form Klassen die Möglichkeit Dijits nativ in eigenen Formularen anzupassen.

Es gibt drei Optionen für die Anpassung der Dojo Formularelemente in eigenen Formularen:

- Verwenden von Zend_Dojo::enableForm(). Das fügt Pluginpfade für Dekoratore und Elemente in allen hinzugefügten Formularelementen, rekursiv, hinzu. Zusätzlich macht es die Viewobjekte dojo-verwendbar. Trotzdem ist zu beachten das jedes Unterformular das nach diesem Aufruf angefügt wird, auch an Zend_Dojo::enableForm() übergeben wird.

- Verwenden der Dojo-spezifischen Formular und Unterformular Implementationen, Zend_Dojo_Form und Zend_Dojo_Form_SubForm. Diese können als sofort verwendbarer Ersatz für Zend_Form und Zend_Form_SubForm verwendet werden, enthalten alle notwendigen Dekorator und Elementpfade, setzen die Dojo-spezifische Standard-DisplayGroup-Klasse, und machen die View dojo-verwendbar.

- Als letztes, und weitschweifigstes, kan man die notwendigen Dekorator und Elementpfade selbst setzen, die Standard-DisplayGroup-Klasse setzen, und die View dojo-verwendbar machen. Da Zend_Dojo::enableForm() das bereits macht, gibt es nur sehr wenig Gründe diesen Weg zu nehmen.

Aktivieren von Dojo in bestehenden Formularen

"Warte mal,", wird man sagen; "Ich erweitere bereits Zend_Form mit meiner eigenen Formularklasse! Wie kann ich Sie Dojo-verwendbar machen?'"

Als erstes, und einfachstes, muß einfach die Erweiterung von Zend_Form so geändert werden das Zend_Dojo_Form erweitert wird, und alle Plätze in denen man Zend_Form_SubForm instanziert so aktualisiert werden das Zend_Dojo_Form_SubForm instanziert wird.

Ein zweiter Weg ist der Aufruf von Zend_Dojo::enableForm() in der eigenen init() Methode des Formulars; wenn die Fomulardefinition komplett ist, muß durch alle Unterformulare iteriert werden um Sie für Dojo zu aktivieren:

    class My_Form_Custom extends Zend_Form
    {
        public function init()
        {
            // Das Formular Dojo-aktivieren:
            Zend_Dojo::enableForm($this);

            // ... die Fomulardefinition hier weiterführen

            // Alle Unterformulare für Dojo aktivieren:
            foreach ($this->getSubForms() as $subForm) {
                Zend_Dojo::enableForm($subForm);
            }
        }
    }

Die Verwendung der Dijit-spezifischen Formulardekoratoren und Elemente ist wie die Verwendung von anderen Formulardekoratoren oder Element.