| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?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>Formular Elemente und Dekoratore für Dojo</title>
- <para>
- Aufbauend auf den <link linkend="zend.dojo.view.dijit">Dijit View Helfern</link> bietet die
- Familie der <classname>Zend_Dojo_Form</classname> Klassen die Möglichkeit Dijits nativ in
- eigenen Formularen anzupassen.
- </para>
- <para>
- Es gibt drei Optionen für die Anpassung der Dojo Formularelemente in eigenen Formularen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Verwenden von <methodname>Zend_Dojo::enableForm()</methodname>. 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 <emphasis>nach</emphasis> diesem Aufruf angefügt wird,
- auch an <methodname>Zend_Dojo::enableForm()</methodname> übergeben wird.
- </para>
- </listitem>
- <listitem>
- <para>
- Verwenden der Dojo-spezifischen Formular und Unterformular Implementationen,
- <classname>Zend_Dojo_Form</classname> und
- <classname>Zend_Dojo_Form_SubForm</classname>. Diese können als sofort verwendbarer
- Ersatz für <classname>Zend_Form</classname> und
- <classname>Zend_Form_SubForm</classname> verwendet werden, enthalten alle
- notwendigen Dekorator und Elementpfade, setzen die Dojo-spezifische
- Standard-DisplayGroup-Klasse, und machen die View dojo-verwendbar.
- </para>
- </listitem>
- <listitem>
- <para>
- 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 <methodname>Zend_Dojo::enableForm()</methodname> das
- bereits macht, gibt es nur sehr wenig Gründe diesen Weg zu nehmen.
- </para>
- </listitem>
- </itemizedlist>
- <example id="zend.dojo.form.enable">
- <title>Aktivieren von Dojo in bestehenden Formularen</title>
- <para>
- "Warte mal,", wird man sagen; "Ich erweitere bereits <classname>Zend_Form</classname>
- mit meiner eigenen Formularklasse! Wie kann ich Sie Dojo-verwendbar machen?'"
- </para>
- <para>
- Als erstes, und einfachstes, muß einfach die Erweiterung von
- <classname>Zend_Form</classname> so geändert werden das
- <classname>Zend_Dojo_Form</classname> erweitert wird, und alle Plätze in denen man
- <classname>Zend_Form_SubForm</classname> instanziert so aktualisiert werden das
- <classname>Zend_Dojo_Form_SubForm</classname> instanziert wird.
- </para>
- <para>
- Ein zweiter Weg ist der Aufruf von <methodname>Zend_Dojo::enableForm()</methodname> in
- der eigenen <methodname>init()</methodname> Methode des Formulars; wenn die
- Fomulardefinition komplett ist, muß durch alle Unterformulare iteriert werden um Sie
- für Dojo zu aktivieren:
- </para>
- <programlisting language="php"><![CDATA[
- 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);
- }
- }
- }
- ]]></programlisting>
- </example>
- <para>
- Die Verwendung der Dijit-spezifischen Formulardekoratoren und Elemente ist wie die
- Verwendung von anderen Formulardekoratoren oder Element.
- </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>
|