Zend_Form-StandardElements.xml 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 21996 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.form.standardElements">
  5. <title>Standard Form Elemente die mit dem Zend Framework ausgeliefert werden</title>
  6. <para>
  7. Zend Framework wird mit konkreten Element Klassen ausgeliefert welche die meisten
  8. <acronym>HTML</acronym> Form Elemente abdecken. Die meisten spezifizieren einfach einen
  9. speziellen View Helfer zur Verwendung wenn das Element dekoriert wird, aber einige bieten
  10. zusätzliche Funktionalitäten an. Nachfolgend ist eine Liste aller solcher Klassen, sowie
  11. eine Beschreibung der Funktionalität die Sie anbieten.
  12. </para>
  13. <sect2 id="zend.form.standardElements.button">
  14. <title>Zend_Form_Element_Button</title>
  15. <para>
  16. Wird für die Erstellung von <acronym>HTML</acronym> Button Elementen verwendet wobei
  17. <classname>Zend_Form_Element_Button</classname>
  18. <link linkend="zend.form.standardElements.submit">Zend_Form_Element_Submit</link>
  19. erweitert, und seine eigene Funktionalität hinzufügt. Sie spezifiziert den 'formButton'
  20. View Helfer für die Dekoration.
  21. </para>
  22. <para>
  23. Wie das Submit Element, verwendet es das Label des Elements als den Elementwert für
  24. Darstellungszwecke; in anderen Worten, um den Text des Buttons zu setzen, muß der
  25. Wert des Elements gesetzt werden. Das Label wird übersetzt wenn ein
  26. Übersetzungsadapter vorhanden ist.
  27. </para>
  28. <para>
  29. Weil das Label als Teil des Elements verwendet wird, verwendet das Button Element nur
  30. den <link linkend="zend.form.standardDecorators.viewHelper">ViewHelper</link> und den
  31. <link linkend="zend.form.standardDecorators.dtDdWrapper">DtDdWrapper</link> Dekorator.
  32. </para>
  33. <para>
  34. Nach der Veröffentlichung oder Prüfung einer Form, kann geprüft werden ob der gegebene
  35. Button geklickt wurd indem die <methodname>isChecked()</methodname> Methode verwendet
  36. wird.
  37. </para>
  38. </sect2>
  39. <sect2 id="zend.form.standardElements.captcha">
  40. <title>Zend_Form_Element_Captcha</title>
  41. <para>
  42. CAPTCHAs werden verwendet um automatische Übermittlung von Formularen durch Bots und
  43. andere automatische Prozesse zu verhindern.
  44. </para>
  45. <para>
  46. Das Captcha Formularelement erlaubt es den <link
  47. linkend="zend.captcha.adapters">Zend_Captcha Adapter</link> der als Formular CAPTCHA
  48. verwendet werden soll anzupassen. Er setzt dann diesen Adapter als Prüfung für das
  49. Objekt, und verwendet den Captcha Dekorator für die Darstellung (welche den CAPTCHA
  50. Adapter aufruft).
  51. </para>
  52. <para>
  53. Adapter können alle Adapter in <classname>Zend_Captcha</classname> sein, sowie jeder
  54. eigene Adapter der irgendwo anders definiert wurde. Um das zu erlauben, kann ein
  55. zusätzlicher Schlüssel für den Plugin Ladetyp, 'CAPTCHA' oder 'captcha' übergeben
  56. werden, wenn der Plugin Loader Präfixpfad spezifiziert wird:
  57. </para>
  58. <programlisting language="php"><![CDATA[
  59. $element->addPrefixPath('My_Captcha', 'My/Captcha/', 'captcha');
  60. ]]></programlisting>
  61. <para>
  62. Captcha's können dann durch Verwendung der <methodname>setCaptcha()</methodname> Methode
  63. registriert werden, welche entweder eine konkrete CAPTCHA Instanz, oder den Kurznamen
  64. des CAPTCHA Adapters nimmt:
  65. </para>
  66. <programlisting language="php"><![CDATA[
  67. // Konkrete Instanz:
  68. $element->setCaptcha(new Zend_Captcha_Figlet());
  69. // Verwendung von Kurznamen:
  70. $element->setCaptcha('Dumb');
  71. ]]></programlisting>
  72. <para>
  73. Wenn das Element über die Konfiguration geladen werden soll, kann entweder der Schlüssel
  74. 'captcha' mit einem Array das den Schlüssel 'captcha' enthält spezifiziert werden, oder
  75. beide Schlüssel 'captcha' und 'captchaOptions':
  76. </para>
  77. <programlisting language="php"><![CDATA[
  78. // Verwendung eines einzelnen captcha Schlüssels:
  79. $element = new Zend_Form_Element_Captcha('foo', array(
  80. 'label' => "Bitte verifizieren Sie das Sie menschlich sind",
  81. 'captcha' => array(
  82. 'captcha' => 'Figlet',
  83. 'wordLen' => 6,
  84. 'timeout' => 300,
  85. ),
  86. ));
  87. // Verwendung von beiden, captcha und captchaOptions:
  88. $element = new Zend_Form_Element_Captcha('foo', array(
  89. 'label' => "Bitte verifizieren Sie das Sie menschlich sind",
  90. 'captcha' => 'Figlet',
  91. 'captchaOptions' => array(
  92. 'captcha' => 'Figlet',
  93. 'wordLen' => 6,
  94. 'timeout' => 300,
  95. ),
  96. ));
  97. ]]></programlisting>
  98. <para>
  99. Der verwendete Dekorator wird durch die Abfrage des Captcha Adapters erkannt.
  100. Standardmäßig wird der <link linkend="zend.form.standardDecorators.captcha">Captcha
  101. Dekorator</link> verwendet, aber ein Adapter kann einen anderen über die
  102. <methodname>getDecorator()</methodname> Methode spezifizieren.
  103. </para>
  104. <para>
  105. Wie beschrieben, fungiert der Captcha Adapter selbst als Prüfnug für das Element.
  106. Zusätzlich wird die NotEmpty Prüfung nicht verwendet, und das Element wird als benötigt
  107. markiert. In den meisten Fällen sollte sonst nichts anderes mehr notwendig sein um das
  108. Captcha im eigenen Formular zu haben.
  109. </para>
  110. </sect2>
  111. <sect2 id="zend.form.standardElements.checkbox">
  112. <title>Zend_Form_Element_Checkbox</title>
  113. <para>
  114. <acronym>HTML</acronym> Checkboxen erlauben es spezifische Werte zurückzugeben, arbeiten
  115. aber grundsätzlich als Boolean. Wenn Sie angehackt sind, wird der Wert der Checkbox
  116. übertragen. Wenn Sie nicht angehackt sind, wird nichts übertragen. Intern erzwingt
  117. <classname>Zend_Form_Element_Checkbox</classname> diesen Status.
  118. </para>
  119. <para>
  120. Standardmäßg ist der angehackte Wert '1', und der nicht angehackte Wert '0'. Dieser
  121. Wert kann spezifiziert werden indem die <methodname>setCheckedValue()</methodname> und
  122. <methodname>setUncheckedValue()</methodname> Zugriffsmethoden verwendet werden. Intern
  123. wird, jedesmal wenn der Wert gesetzt wird, wenn der angebotene Wert dem angehackten Wert
  124. entspricht, er gesetzt, aber jeder andere Wert bewirkt das der nicht angehackte Wert
  125. gesetzt wird.
  126. </para>
  127. <para>
  128. Zusätzlich setzt, das Setzen des Werte, die <property>checked</property> Eigenschaft der
  129. Checkbox. Das kann abgefragt werden indem <methodname>isChecked()</methodname> verwendet
  130. wird oder einfach auf die Eigenschaft zugegriffen wird. Das Verwenden der
  131. <methodname>setChecked($flag)</methodname> Methode setzt beides, den Status des Flags
  132. sowie den entsprechenden gecheckten oder nicht gecheckten Wert im Element. Bitte
  133. verwenden Sie diese Methode wenn der gecheckte Status eines Checkbox Elements gesetzt
  134. wird um sicherzustellen das der Wert richtig gesetzt wird.
  135. </para>
  136. <para>
  137. <classname>Zend_Form_Element_Checkbox</classname> verwendet den 'formCheckbox' View
  138. Helfer. Der angehackte Wert wird immer verwendet um Sie zu veröffentlichen.
  139. </para>
  140. </sect2>
  141. <sect2 id="zend.form.standardElements.file">
  142. <title>Zend_Form_Element_File</title>
  143. <para>
  144. Das File Formularelement bietet einen Mechanismus um File Upload-felder in eigenen
  145. Formularen zu Unterstützen. Es verwendet intern
  146. <link linkend="zend.file.transfer.introduction">Zend_File_Transfer</link> um diese
  147. Funktionalität zu bieten, und den <classname>FormFile</classname> Viewhelfer sowie den
  148. <classname>File</classname> Decorator um das Formularelement anzuzeigen.
  149. </para>
  150. <para>
  151. Standardmäßig verwendet es den <classname>Http</classname> Transferadapter, welcher das
  152. <varname>$_FILES</varname> Array prüft und es erlaubt Prüfungen und Filter hinzuzufügen.
  153. Prüfungen und Filter die dem Formularelement hinzugefügt werden, werden dem
  154. Transferadapter hinzugefügt.
  155. </para>
  156. <example id="zend.form.standardElements.file.usage">
  157. <title>Verwendung des File Formularelements</title>
  158. <para>
  159. Die obige Erklärung der Verwendung des File Formularelements mag geheimnisvoll
  160. erscheinen, aber die aktuelle Verwendung ist relativ trivial:
  161. </para>
  162. <programlisting language="php"><![CDATA[
  163. $element = new Zend_Form_Element_File('foo');
  164. $element->setLabel('Ein Bild hochladen:')
  165. ->setDestination('/var/www/upload');
  166. // Nur 1 Datei sicherstellen
  167. $element->addValidator('Count', false, 1);
  168. // Maximal 100k
  169. $element->addValidator('Size', false, 102400);
  170. // Nur JPEG, PNG, und GIFs
  171. $element->addValidator('Extension', false, 'jpg,png,gif');
  172. $form->addElement($element, 'foo');
  173. ]]></programlisting>
  174. <para>
  175. Man sollte auch den richtigen Encodingtyp sicherstellen in dem das Formular
  176. angeboten wird. Das kann getan werden indem das 'enctype' Attribut des Formulars
  177. gesetzt wird:
  178. </para>
  179. <programlisting language="php"><![CDATA[
  180. $form->setAttrib('enctype', 'multipart/form-data');
  181. ]]></programlisting>
  182. <para>
  183. Nachdem das Formular erfolgreich geprüft wurde, muß die Datei empfangen werden um
  184. Sie an Ihrem endgültigen Ziel zu speichern indem <methodname>receive()</methodname>
  185. verwendet wird. Zusätzlich kann man das endgültige Ziel ermittelt werden indem
  186. <methodname>getFileName()</methodname> verwendet wird:
  187. </para>
  188. <programlisting language="php"><![CDATA[
  189. if (!$form->isValid()) {
  190. print "Uh oh... Prüfungsfehler";
  191. }
  192. if (!$form->foo->receive()) {
  193. print "Fehler beim Empfangen der Datei";
  194. }
  195. $location = $form->foo->getFileName();
  196. ]]></programlisting>
  197. </example>
  198. <note>
  199. <title>Standardmäßige Ablage von Uploads</title>
  200. <para>
  201. Standardmäßig werden Dateien in das Temp Verzeichnis des Systems hochgeladen.
  202. </para>
  203. </note>
  204. <note>
  205. <title>Datei Werte</title>
  206. <para>
  207. In <acronym>HTTP</acronym> hat das File Element keinen Wert. Aus diesem Grund, und
  208. aus Gründen der Sicherheit erhält gibt <methodname>getValue()</methodname> nur den
  209. Dateinamen der hochgeladenen Datei zurück und nicht den kompletten Pfad. Wenn man
  210. die kompletten Informationen benötigt kann <methodname>getFileName()</methodname>
  211. aufgerufen werden, welches sowohl den Pfad als auch den Namen der Datei zurückgibt.
  212. </para>
  213. </note>
  214. <para>
  215. Standardmäßig wird die Datei automatisch empfangen wenn man
  216. <methodname>getValues()</methodname> auf dem Formular aufruft. Der Grund hinter diesem
  217. Verhalten ist, das die Datei selbst der Wert des File Elements ist.
  218. </para>
  219. <programlisting language="php"><![CDATA[
  220. $form->getValues();
  221. ]]></programlisting>
  222. <note>
  223. <para>
  224. Deshalb hat ein weiterer Aufruf von <methodname>receive()</methodname> nach dem
  225. Aufruf von <methodname>getValues()</methodname> keinen Effekt. Auch die Erstellung
  226. einer Instanz von <classname>Zend_File_Transfer</classname> wird keinen Effekt haben
  227. da es keine weitere Datei zum Empfangen gibt.
  228. </para>
  229. </note>
  230. <para>
  231. Trotzdem kann es manchmal gewünscht sein <methodname>getValues()</methodname> aufzurufen
  232. ohne das die Datei empfangen wird. Man kann dies erreichen indem
  233. <methodname>setValueDisabled(true)</methodname> aufgerufen wird. Um den aktuellen Wert
  234. dieses Flags zu erhalten kann man <methodname>isValueDisabled()</methodname> aufrufen.
  235. </para>
  236. <example id="zend.form.standardElements.file.retrievement">
  237. <title>Datei explizit empfangen</title>
  238. <para>
  239. Zuerst <methodname>setValueDisabled(true)</methodname> aufrufen.
  240. </para>
  241. <programlisting language="php"><![CDATA[
  242. $element = new Zend_Form_Element_File('foo');
  243. $element->setLabel('Ein Bild hochladen:')
  244. ->setDestination('/var/www/upload')
  245. ->setValueDisabled(true);
  246. ]]></programlisting>
  247. <para>
  248. Jetzt wird die Datei nicht mehr empfangen wenn man
  249. <methodname>getValues()</methodname> aufruft. Man muß also
  250. <methodname>receive()</methodname> vom Datei Element, oder einer Instanz von
  251. <classname>Zend_File_Transfer</classname> selbst aufrufen.
  252. </para>
  253. <programlisting language="php"><![CDATA[
  254. $values = $form->getValues();
  255. if ($form->isValid($form->getPost())) {
  256. if (!$form->foo->receive()) {
  257. print "Upload Fehler";
  258. }
  259. }
  260. ]]></programlisting>
  261. </example>
  262. <para>
  263. Es gibt verschiedene Stati von hochgeladenen Dateien welche mit den folgenden Optionen
  264. geprüft werden können:
  265. </para>
  266. <itemizedlist>
  267. <listitem>
  268. <para>
  269. <methodname>isUploaded()</methodname>: Prüft ob das Dateielement hochgeladen
  270. wurde oder nicht.
  271. </para>
  272. </listitem>
  273. <listitem>
  274. <para>
  275. <methodname>isReceived()</methodname>: Prüft ob das Dateielement bereits
  276. empfangen wurde.
  277. </para>
  278. </listitem>
  279. <listitem>
  280. <para>
  281. <methodname>isFiltered()</methodname>: Prüft ob die Filter bereits dem
  282. Dateielement angehängt wurden oder nicht.
  283. </para>
  284. </listitem>
  285. </itemizedlist>
  286. <example id="zend.form.standardElements.file.isuploaded">
  287. <title>Prüfen ob eine optionale Datei hochgeladen wurde</title>
  288. <programlisting language="php"><![CDATA[
  289. $element = new Zend_Form_Element_File('foo');
  290. $element->setLabel('Ein Bild hochladen:')
  291. ->setDestination('/var/www/upload')
  292. ->setRequired(false);
  293. $element->addValidator('Size', false, 102400);
  294. $form->addElement($element, 'foo');
  295. // Das foo Dateielement is optional, aber wenn es angegeben wurde, gehe hier herein
  296. if ($form->foo->isUploaded()) {
  297. // Die foo Datei ist angegeben... mach was
  298. }
  299. ]]></programlisting>
  300. </example>
  301. <para>
  302. <classname>Zend_Form_Element_File</classname> unterstützt auch mehrere Dateien. Durch
  303. den Aufruf der <methodname>setMultiFile($count)</methodname> Methode kann die Anzahl an
  304. File Elementen die man erstellen will festgelegt werden. Das verhindert das die selben
  305. Einstellungen mehrere Male durchgeführt werden müssen.
  306. </para>
  307. <example id="zend.form.standardElements.file.multiusage">
  308. <title>Mehrere Dateien setzen</title>
  309. <para>
  310. Die Erstellung eines Multifile Elements ist das gleiche wie das Erstellen eines
  311. einzelnen Elements. Man muß nur <methodname>setMultiFile()</methodname> aufrufen
  312. nachdem das Element erstellt wurde:
  313. </para>
  314. <programlisting language="php"><![CDATA[
  315. $element = new Zend_Form_Element_File('foo');
  316. $element->setLabel('Ein Bild hochladen:')
  317. ->setDestination('/var/www/upload');
  318. // Mindestens 1 und maximal 3 Dateien sicherstellen
  319. $element->addValidator('Count', false, array('min' => 1, 'max' => 3));
  320. // Auf 100k limitieren
  321. $element->addValidator('Size', false, 102400);
  322. // Nur JPEG, PNG, und GIFs
  323. $element->addValidator('Extension', false, 'jpg,png,gif');
  324. // 3 identische Dateielemente definieren
  325. $element->setMultiFile(3);
  326. $form->addElement($element, 'foo');
  327. ]]></programlisting>
  328. <para>
  329. In der View erhält man nun 3 identische File Upload Elemente welche alle die
  330. gleichen Einstellungen verwenden. Um die Multifile Anzahl zu erhalten kann man
  331. einfach <methodname>getMultiFile()</methodname> aufrufen.
  332. </para>
  333. </example>
  334. <note>
  335. <title>File Elemente in Subformularen</title>
  336. <para>
  337. Wenn File Elemente in Subformularen verwendet werden muß man eindeutige Namen
  338. setzen. Wenn man zum Beispiel ein File Element in Subform1 "file" benennt, muß es in
  339. Subform2 einen anderen Namen erhalten.
  340. </para>
  341. <para>
  342. Sobald es 2 identisch benannte File Elemente gibt, wird das zweite Element entweder
  343. nicht dargestellt oder nicht übertragen.
  344. </para>
  345. <para>
  346. Zusätzlich werden File Element nicht im Unterformulat dargestellt. Wenn man also ein
  347. File Element in einem Unterformulat hinzufügt, wird das Element im Hauptformular
  348. dargestellt.
  349. </para>
  350. </note>
  351. <para>
  352. Um die Größe der Datei zu begrenzen, kann die maximale
  353. Dateigröße spezifiziert werden indem die <constant>MAX_FILE_SIZE</constant> Option im
  354. Formular gesetzt wird. Sobald der Wert, durch die Verwendung der
  355. <methodname>setMaxFileSize($size)</methodname> Methode, gesetzt ist, wird er mit dem
  356. File Element dargestellt.
  357. </para>
  358. <programlisting language="php"><![CDATA[
  359. $element = new Zend_Form_Element_File('foo');
  360. $element->setLabel('Ein Bild hochladen:')
  361. ->setDestination('/var/www/upload')
  362. ->addValidator('Size', false, 102400) // Limitiert auf 100k
  363. ->setMaxFileSize(102400); // Limitiert die Dateigröße auf der Clientseite
  364. $form->addElement($element, 'foo');
  365. ]]></programlisting>
  366. <note>
  367. <title>MaxFileSize mit mehreren File Elementen</title>
  368. <para>
  369. Wenn mehrere File Elemente im Formular verwendet werden sollte man
  370. <constant>MAX_FILE_SIZE</constant> nur einmal setzen. Wird es nochmals gesetzt
  371. überschreibt es den vorherigen Wert.
  372. </para>
  373. <para>
  374. Beachte, dass das auch der Fall ist wenn man mehrere Formulare verwendet.
  375. </para>
  376. </note>
  377. </sect2>
  378. <sect2 id="zend.form.standardElements.hidden">
  379. <title>Zend_Form_Element_Hidden</title>
  380. <para>
  381. Versteckte Elemente fügen Daten ein die übertragen werden sollen, welche der Benutzer
  382. aber nicht manipulieren soll. <classname>Zend_Form_Element_Hidden</classname> ermöglicht
  383. das mit dem 'formHidden' View Helfers.
  384. </para>
  385. </sect2>
  386. <sect2 id="zend.form.standardElements.hash">
  387. <title>Zend_Form_Element_Hash</title>
  388. <para>
  389. Dieses Element bietet Schutz vor CSRF Attacken auf Forms, und stellt sicher das die
  390. Daten die übertragen werden von der Benutzersession stammen welche die Form erstellt hat
  391. und nicht durch ein bösartiges Skript. Sicherheit wird ermöglicht durch das hinzufügen
  392. eines Hash Elements zur form und dessen Prüfung wenn die Form übermittelt wird.
  393. </para>
  394. <para>
  395. Der Name des Hash Elements sollte einmalig sein. Wir emphehlen die Verwendung der
  396. <literal>salt</literal> Option für das Element- damit zwei Hashes mit dem gleichen
  397. Namen und unterschiedlichen Salts nicht kollidieren:
  398. </para>
  399. <programlisting language="php"><![CDATA[
  400. $form->addElement('hash', 'no_csrf_foo', array('salt' => 'unique'));
  401. ]]></programlisting>
  402. <para>
  403. Das Salt kann später gesetzt werden durch Verwendung der
  404. <methodname>setSalt($salt)</methodname> Methode.
  405. </para>
  406. <para>
  407. Intern speichert das Element einen eindeutigen Identifikator indem es
  408. <classname>Zend_Session_Namespace</classname> verwendet, und danach bei der Übertragung
  409. checkt (es wird geprüft das die TTL nicht abgelaufen ist). Die 'Identical' Prüfung wird
  410. Internally, the element stores a unique identifier using
  411. <classname>Zend_Session_Namespace</classname>, and checks for it at
  412. submission (checking that the TTL has not expired). The 'Identical'
  413. validator is then used to ensure the submitted hash matches the
  414. stored hash.
  415. </para>
  416. <para>
  417. Der 'formHidden' View Helfer wird verwendet um das Element in der Form darzustellen.
  418. </para>
  419. </sect2>
  420. <sect2 id="zend.form.standardElements.Image">
  421. <title>Zend_Form_Element_Image</title>
  422. <para>
  423. Bilder können als Form Elemente verwendet werden und man kann diese Bilder als
  424. graphische Elemente auf Form Buttons verwenden.
  425. </para>
  426. <para>
  427. Bilder benötigen eine Bildquelle. <classname>Zend_Form_Element_Image</classname> erlaube
  428. dessen Spezifikation durch Verwendung der <methodname>setImage()</methodname>
  429. Zugriffsmethode (oder des 'image' Konfigurations Schlüssels). Es kann auch optional ein
  430. Wert spezifiziert werden der zu verwenden ist wenn das Bild übertragen wird indem die
  431. Zugriffsmethode <methodname>setImageValue()</methodname> verwendet wird (oder der
  432. 'imageValue Konfigurations Schlüssel). Wenn der Wert der für das Element gesetzt ist,
  433. mit <property>imageValue</property> übereinstimmt, gibt
  434. <methodname>isChecked()</methodname> <constant>TRUE</constant> zurück.
  435. </para>
  436. <para>
  437. Bild Elemente verwenden den
  438. <link linkend="zend.form.standardDecorators.image">Image Decorator</link> für die
  439. Darstellung, zusätzlich zu den Standard Error, HtmlTag und Label Dekoratoren. Es kann
  440. optional ein Tag für den <classname>Image</classname> Dekorator spezifiziert werden der
  441. das Bild einbettet.
  442. </para>
  443. </sect2>
  444. <sect2 id="zend.form.standardElements.multiCheckbox">
  445. <title>Zend_Form_Element_MultiCheckbox</title>
  446. <para>
  447. Oft hat man ein Set von zusammenhängenden Checkboxen, und die Ergebnisse sollen
  448. gruppiert werden. Das ist so ähnlich wie
  449. <link linkend="zend.form.standardElements.multiselect">Multiselect</link> aber statt
  450. das Sie in einer DropDown Liste sind, müssen Checkbox/Werte Paare dargestellt werden.
  451. </para>
  452. <para>
  453. <classname>Zend_Form_Element_MultiCheckbox</classname> macht das in einem Rutsch. Wie
  454. alle anderen Elemente kann mit der Erweiterung des Basis MultiElements eine Liste von
  455. Optionen spezifiziert werden und einfach gegen die selbe Liste geprüft werden. Der
  456. 'formMultiCheckbox' View Helfer stellt sicher das Sie als Array bei der Übermittlung
  457. der Form zurückgegeben werden.
  458. </para>
  459. <para>
  460. Standardmäßig registriert dieses Element die <classname>InArray</classname> Prüfung
  461. welche gegen Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann
  462. deaktiviert werden indem entweder
  463. <methodname>setRegisterInArrayValidator(false)</methodname> aufgerufen, oder indem ein
  464. <constant>FALSE</constant> Wert an den <property>registerInArrayValidator</property>
  465. Konfigurationsschlüssel übergeben wird.
  466. </para>
  467. <para>
  468. Die verschiedenen Checkbox Optionen können mit den folgenden Methoden manipuliert
  469. werden:
  470. </para>
  471. <itemizedlist>
  472. <listitem>
  473. <para><methodname>addMultiOption($option, $value)</methodname></para>
  474. </listitem>
  475. <listitem>
  476. <para><methodname>addMultiOptions(array $options)</methodname></para>
  477. </listitem>
  478. <listitem>
  479. <para>
  480. <methodname>setMultiOptions(array $options)</methodname> (überschreibt
  481. existierende Optionen)
  482. </para>
  483. </listitem>
  484. <listitem><para><methodname>getMultiOption($option)</methodname></para></listitem>
  485. <listitem><para><methodname>getMultiOptions()</methodname></para></listitem>
  486. <listitem><para><methodname>removeMultiOption($option)</methodname></para></listitem>
  487. <listitem><para><methodname>clearMultiOptions()</methodname></para></listitem>
  488. </itemizedlist>
  489. <para>
  490. Um gecheckte Elemente zu markieren, muß ein Array an Werte an
  491. <methodname>setValue()</methodname> übergeben werden. Der folgende Code prüft die Werte
  492. "bar" und "bat":
  493. </para>
  494. <programlisting language="php"><![CDATA[
  495. $element = new Zend_Form_Element_MultiCheckbox('foo', array(
  496. 'multiOptions' => array(
  497. 'foo' => 'Foo Option',
  498. 'bar' => 'Bar Option',
  499. 'baz' => 'Baz Option',
  500. 'bat' => 'Bat Option',
  501. )
  502. ));
  503. $element->setValue(array('bar', 'bat'));
  504. ]]></programlisting>
  505. <para>
  506. Beachte das man auch für das Setzen eines einzelnen Wertes ein Array übergeben muß.
  507. </para>
  508. </sect2>
  509. <sect2 id="zend.form.standardElements.multiselect">
  510. <title>Zend_Form_Element_Multiselect</title>
  511. <para>
  512. <acronym>XHTML</acronym> <emphasis>select</emphasis> Elemente erlaube ein 'multiple'
  513. Attribut, das zeigt das mehrere Optionen für die Übermittlung ausgewählt werden können,
  514. statt normalerweise nur eines. <classname>Zend_Form_Element_Multiselect</classname>
  515. erweitert <link
  516. linkend="zend.form.standardElements.select">Zend_Form_Element_Select</link> und
  517. setzt das <property>multiple</property> Attribut auf 'multiple'. Wie andere Klassen die
  518. von der Basisklasse <classname>Zend_Form_Element_Multi</classname> abgeleitet werden,
  519. können die Optionen für die Auswahl wie folgt verändert werden:
  520. </para>
  521. <itemizedlist>
  522. <listitem>
  523. <para><methodname>addMultiOption($option, $value)</methodname></para>
  524. </listitem>
  525. <listitem>
  526. <para><methodname>addMultiOptions(array $options)</methodname></para>
  527. </listitem>
  528. <listitem>
  529. <para>
  530. <methodname>setMultiOptions(array $options)</methodname>
  531. (überschreibt existierende Optionen)
  532. </para>
  533. </listitem>
  534. <listitem><para><methodname>getMultiOption($option)</methodname></para></listitem>
  535. <listitem><para><methodname>getMultiOptions()</methodname></para></listitem>
  536. <listitem><para><methodname>removeMultiOption($option)</methodname></para></listitem>
  537. <listitem><para><methodname>clearMultiOptions()</methodname></para></listitem>
  538. </itemizedlist>
  539. <para>
  540. Wenn ein Übersetzungs Adapter in der Form und/oder dem Element registriert ist,
  541. werden Optionswerte für Darstellungzwecke übersetzt.
  542. </para>
  543. <para>
  544. Standardmäßig registriert dieses Element die <classname>InArray</classname> Prüfung
  545. welche gegen Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann
  546. deaktiviert werden indem entweder
  547. <methodname>setRegisterInArrayValidator(false)</methodname> aufgerufen, oder indem ein
  548. <constant>FALSE</constant> Wert an den <property>registerInArrayValidator</property>
  549. Konfigurationsschlüssel übergeben wird.
  550. </para>
  551. </sect2>
  552. <sect2 id="zend.form.standardElements.password">
  553. <title>Zend_Form_Element_Password</title>
  554. <para>
  555. Passwort Element sind grundsätzlich normale Textelemente -- ausser das typischerweise
  556. das eingegebene Passwort nicht in Fehlermeldungen oder dem Element selbst angezeigt
  557. werden soll wenn die Form normals angezeigt wird.
  558. </para>
  559. <para>
  560. <classname>Zend_Form_Element_Password</classname> ermöglicht das durch den Aufruf von
  561. <methodname>setObscureValue(true)</methodname> auf jeder Prüfung (und stellt sicher das
  562. das Passwort in der Prüfungs Fehlermeldung verschleiert wird), und verwendet den
  563. 'formPassword' View Helfer (welcher den an Ihn übergebenen Wert nicht anzeigt).
  564. </para>
  565. </sect2>
  566. <sect2 id="zend.form.standardElements.radio">
  567. <title>Zend_Form_Element_Radio</title>
  568. <para>
  569. Radio Elemente erlauben es verschiedene Optionen zu spezifizieren, von denen ein
  570. einzelner Wert zurückgegeben wird. <classname>Zend_Form_Element_Radio</classname>
  571. erweitert die Basisklasse <classname>Zend_Form_Element_Multi</classname> und erlaubt es
  572. eine Anzahl von Optionen zu spezifizieren, und verwendet dann den
  573. <emphasis>formRadio</emphasis> View Helfer um diese darzustellen.
  574. </para>
  575. <para>
  576. Standardmäßig registriert dieses Element die <classname>InArray</classname> Prüfung
  577. welche gegen Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann
  578. deaktiviert werden indem entweder
  579. <methodname>setRegisterInArrayValidator(false)</methodname> aufgerufen, oder indem ein
  580. <constant>FALSE</constant> Wert an den <property>registerInArrayValidator</property>
  581. Konfigurationsschlüssel übergeben wird.
  582. </para>
  583. <para>
  584. Wie alle Elemente welche die Basisklasse des Multl Elements erweitern, können die
  585. folgenden Methode verwendet werden um die Radio Optionen zu manipulieren die angezeigt
  586. werden:
  587. </para>
  588. <itemizedlist>
  589. <listitem>
  590. <para><methodname>addMultiOption($option, $value)</methodname></para>
  591. </listitem>
  592. <listitem>
  593. <para><methodname>addMultiOptions(array $options)</methodname></para>
  594. </listitem>
  595. <listitem>
  596. <para>
  597. <methodname>setMultiOptions(array $options)</methodname> (überschreibt
  598. existierende Optionen)
  599. </para>
  600. </listitem>
  601. <listitem><para><methodname>getMultiOption($option)</methodname></para></listitem>
  602. <listitem><para><methodname>getMultiOptions()</methodname></para></listitem>
  603. <listitem><para><methodname>removeMultiOption($option)</methodname></para></listitem>
  604. <listitem><para><methodname>clearMultiOptions()</methodname></para></listitem>
  605. </itemizedlist>
  606. </sect2>
  607. <sect2 id="zend.form.standardElements.reset">
  608. <title>Zend_Form_Element_Reset</title>
  609. <para>
  610. Reset Buttons werden typischerweise verwendet um eine Form zu löschen, und sind nicht
  611. Teil der übermittelten Daten. Da Sie trotzdem einen Zweck in der Anzeige bieten, sind
  612. Sie in den Standardelementen enthalten.
  613. </para>
  614. <para>
  615. <classname>Zend_Form_Element_Reset</classname> erweitert
  616. <link linkend="zend.form.standardElements.submit">Zend_Form_Element_Submit</link>.
  617. Deswegen wird das Label für die Anzeige des Buttons verwendet und wird übersetzt
  618. wenn ein Übersetzungs Adapter vorhanden ist. Es verwendet nur die 'ViewHelper' und
  619. 'DtDdWrapper' Dekoratore, da es nie Fehlermeldungen für solche Elemente geben sollte,
  620. noch sollte ein Label notwendig sein.
  621. </para>
  622. </sect2>
  623. <sect2 id="zend.form.standardElements.select">
  624. <title>Zend_Form_Element_Select</title>
  625. <para>
  626. Auswahlboxen sind der übliche Weg um spezielle Auswahlen für gegebene Formdaten zu
  627. begrenzen. <classname>Zend_Form_Element_Select</classname> erlaubt es diese schnell und
  628. einfach zu erzeugen.
  629. </para>
  630. <para>
  631. Standardmäßig registriert dieses Element die <classname>InArray</classname> Prüfung
  632. welche gegen Arrayschlüssel von registrierten Optionen prüft. Dieses Verhalten kann
  633. deaktiviert werden indem entweder
  634. <methodname>setRegisterInArrayValidator(false)</methodname> aufgerufen, oder indem ein
  635. <constant>FALSE</constant> Wert an den <property>registerInArrayValidator</property>
  636. Konfigurationsschlüssel übergeben wird.
  637. </para>
  638. <para>
  639. Da es das Basis Multielement erweitert, können die folgenden Methoden verwendet werden
  640. um die Auswahloptionen zu manipulieren:
  641. </para>
  642. <itemizedlist>
  643. <listitem>
  644. <para><methodname>addMultiOption($option, $value)</methodname></para>
  645. </listitem>
  646. <listitem>
  647. <para><methodname>addMultiOptions(array $options)</methodname></para>
  648. </listitem>
  649. <listitem>
  650. <para>
  651. <methodname>setMultiOptions(array $options)</methodname>
  652. (überschreibt existierende Optionen)
  653. </para>
  654. </listitem>
  655. <listitem><para><methodname>getMultiOption($option)</methodname></para></listitem>
  656. <listitem><para><methodname>getMultiOptions()</methodname></para></listitem>
  657. <listitem><para><methodname>removeMultiOption($option)</methodname></para></listitem>
  658. <listitem><para><methodname>clearMultiOptions()</methodname></para></listitem>
  659. </itemizedlist>
  660. <para>
  661. <classname>Zend_Form_Element_Select</classname> verwendet den 'formSelect' View Helfer
  662. für die Dekoration.
  663. </para>
  664. </sect2>
  665. <sect2 id="zend.form.standardElements.submit">
  666. <title>Zend_Form_Element_Submit</title>
  667. <para>
  668. Sendebuttons (Submit) werden verwendet um eine Form zu senden. Es kann gewünscht sein
  669. mehrere Sendebuttons zu verwendetn; die Buttons zur Übermittlung der Form können
  670. verwendet werden um auszuwählen welche Aktion mit den übermittelten Daten genommen
  671. werden soll. <classname>Zend_Form_Element_Submit</classname> macht die Entscheidung
  672. einfach, durch das Hinzufügen einer <methodname>isChecked()</methodname> Methode; da nur
  673. ein Button Element von der Form übermittelt wird, nachdem die Form übermittelt oder
  674. geprüft wurde, kann diese Methode auf jedem Sendebutton ausgerufen werden um
  675. festzustellen welcher verwendet wurde.
  676. </para>
  677. <para>
  678. <classname>Zend_Form_Element_Submit</classname> verwendet das Label als den "Wert" des
  679. Sendebuttons, und übersetzt es wenn ein Übersetzungsadapter vorhanden ist.
  680. <methodname>isChecked()</methodname> prüft den übermittelten Wert gegen das Label um
  681. festzustellen ob der Button verwendet wurde.
  682. </para>
  683. <para>
  684. Die <link linkend="zend.form.standardDecorators.viewHelper">ViewHelper</link> und
  685. <link linkend="zend.form.standardDecorators.dtDdWrapper">DtDdWrapper</link> Dekoratore
  686. werden verwendet um das Element darzustellen. Es wird kein Labeldekorator verwendet, da
  687. das Label des Buttons verwendet wird wenn das Element dargestellt wird; typischerweise
  688. werden acuh keine Fehler mit einem Sendeelement assoziiert.
  689. </para>
  690. </sect2>
  691. <sect2 id="zend.form.standardElements.text">
  692. <title>Zend_Form_Element_Text</title>
  693. <para>
  694. Der nützlichste Typ von Form Element ist das Text Element, das begrenzte Texteinträge
  695. erlaubt; es ist ein ideales Element für die meisten Dateneinträge.
  696. <classname>Zend_Form_Element_Text</classname> verwendet einfach den 'formText' View
  697. Helfer um das Element darzustellen.
  698. </para>
  699. </sect2>
  700. <sect2 id="zend.form.standardElements.textarea">
  701. <title>Zend_Form_Element_Textarea</title>
  702. <para>
  703. Textbereiche werden verwendet wenn große Mengen von Text erwartet werden, und keine
  704. Begrenzung in der Anzahl des übermittelten Textes vorhanden sind (anders als das Limit
  705. der Maximalgröße wie vom Server von <acronym>PHP</acronym> diktiert).
  706. <classname>Zend_Form_Element_Textarea</classname> verwendet den 'textArea' View Helfer
  707. um solche Element darzustellen, und platziert den Wert als Inhalt des Elements.
  708. </para>
  709. </sect2>
  710. </sect1>