Zend_View-Helpers.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. <sect1 id="zend.view.helpers">
  2. <title>View Helpers</title>
  3. <para>
  4. In je view scripts is het dikwijls nodig een aantal complexe
  5. functies steeds weer uit te voeren, bv: een datum formateren,
  6. formulierelementen genereren of aktielinks afbeelden. Je kan
  7. helper klassen gebruiken om deze gedragingen voor jou uit te
  8. voeren.
  9. </para>
  10. <para>
  11. Om een helper in jouw script te gebruiken moet je het oproepen
  12. door $this->helperName() te gebruiken. Achter de scène zal
  13. Zend_View de Zend_View_Helper klasse laden, een instantie van het
  14. objekt maken en zijn helperName() methode oproepen. De
  15. instantie van het objekt is Behind the scenes, Zend_View will load the
  16. Zend_View_Helper_HelperName class, create an object instance of
  17. it, and call its helperName() method. The object instance is
  18. blijvend in de Zend_View instantie, en is hergebruikt voor alle
  19. verdere oproepen aan $this->helperName().
  20. </para>
  21. <sect2 id="zend.view.helpers.initial">
  22. <title>Initiële Helpers</title>
  23. <para>
  24. Zend_View komt met een set van initiële helper klassen die
  25. allemaal relatief zijn aan formulierelementen generatie. Ze
  26. doen elk automatisch de juiste output escaping. Ze zijn:
  27. </para>
  28. <itemizedlist>
  29. <listitem><para>
  30. formButton($name, $value, $attribs): Maakt een &lt;input
  31. type="button" /&gt; element.
  32. </para></listitem>
  33. <listitem><para>
  34. formCheckbox($name, $value, $attribs, $options): maakt
  35. een &lt;input type="checkbox" /&gt; element. De
  36. $options parameter is een array waar de eerste waarde de
  37. "checked" waarde is, en de tweede waarde de "unchecked" waarde
  38. (standaard waarden '1' en '0'). Als $value overeenkomt met de
  39. "checked" waarde, zal de checkbox aangezet worden.
  40. </para></listitem>
  41. <listitem><para>
  42. formFile($name, $value, $attribs): Maakt een &lt;input
  43. type="file" /&gt; element.
  44. </para></listitem>
  45. <listitem><para>
  46. formHidden($name, $value, $attribs): Maakt een &lt;input
  47. type="hidden" /&gt; element.
  48. </para></listitem>
  49. <listitem><para>
  50. formPassword($name, $value, $attribs): Maakt een &lt;input
  51. type="password" /&gt; element.
  52. </para></listitem>
  53. <listitem><para>
  54. formRadio($name, $value, $attribs, $options): Maakt een serie
  55. &lt;input type="radio" /&gt; elementen, één voor elk van de
  56. $options elementen. In de $options array is de element
  57. key de radio waarde en de elementwaarde is de radiolabel.
  58. De $value radio zal worden voorgeselecteerd.
  59. </para></listitem>
  60. <listitem><para>
  61. formReset($name, $value, $attribs): Maakt een &lt;input
  62. type="reset" /&gt; element.
  63. </para></listitem>
  64. <listitem><para>
  65. formSelect($name, $value, $attribs, $options): Maakt een
  66. &lt;select&gt;...&lt;/select&gt; blok met één
  67. &lt;option&gt; voor elk van de $options elementen. In
  68. de $options array is de element key de optiewaarde en de
  69. elementwaarde is de optielabel. De $value optie(s)
  70. zal/zullen worden voorgeselecteerd.
  71. </para></listitem>
  72. <listitem><para>
  73. formSubmit($name, $value, $attribs): Maakt een &lt;input
  74. type="submit" /&gt; element.
  75. </para></listitem>
  76. <listitem><para>
  77. formText($name, $value, $attribs): Maakt een &lt;input
  78. type="text" /&gt; element.
  79. </para></listitem>
  80. <listitem><para>
  81. formTextarea($name, $value, $attribs): Maakt een
  82. &lt;textarea&gt;...&lt;/textarea&gt; blok.
  83. </para></listitem>
  84. </itemizedlist>
  85. <para>
  86. Deze gebruiken in je scripts is heel eenvoudig. Hier is een voorbeeld.
  87. Merk op dat het enige je hoeft te doen is ze op te roepen, ze laden en
  88. instantiëren zichzelf wanneer dat nodig is.
  89. </para>
  90. <programlisting role="php"><![CDATA[<?php
  91. // binnenin je view script verwijst $this naar de Zend_View instantie.
  92. //
  93. // veronderstel dat je reeds een serie select opties hebt toegewezen onder de naam
  94. // $landen als Array('us' => 'Verenigde Staten', 'il' =>
  95. // 'Israël', 'be' => 'België', 'nl' => 'Nederland').
  96. ?>
  97. <form action="aktie.php" method="post">
  98. <p><label>Jouw Email:
  99. <?php echo $this->formText('email', 'you@example.com', array('size' => 32)) ?>
  100. </label></p>
  101. <p><label>Je land:
  102. <?php echo $this->formSelect('country', 'be', null, $this->landen) ?>
  103. </label></p>
  104. <p><label>Zou je je graag inschrijven ?
  105. <?php echo $this->formCheckbox('opt_in', 'ja', null, array('ja', 'nee')) ?>
  106. </label></p>
  107. </form>]]>
  108. </programlisting>
  109. <para>
  110. Het resultaat van het view script zal op het volgende lijken:
  111. </para>
  112. <programlisting role="php"><![CDATA[<form action="aktie.php" method="post">
  113. <p><label>Jouw Email:
  114. <input type="text" name="email" value="you@example.com" size="32" />
  115. </label></p>
  116. <p><label>Je land:
  117. <select name="country">
  118. <option value="us">Verenigde Staten</option>
  119. <option value="il">Israël</option>
  120. <option value="be" selected="selected">België</option>
  121. <option value="nl">Nederland</option>
  122. </select>
  123. </label></p>
  124. <p><label>Zou je je graag inschrijven ?
  125. <input type="hidden" name="opt_in" value="nee" />
  126. <input type="checkbox" name="opt_in" value="ja" checked="checked" />
  127. </label></p>
  128. </form>]]>
  129. </programlisting>
  130. </sect2>
  131. <sect2 id="zend.view.helpers.paths">
  132. <title>Helper Paden</title>
  133. <para>
  134. Zoals met view scripts kan de controller een stapel van paden
  135. specifiëren waar Zend_View naar helper klassen moet zoeken.
  136. Standaard kijkt Zend_View in "Zend/View/Helper/*" voor helper
  137. klassen. Je kan Zend_View vertellen in andere plaatsen te kijken
  138. door de setHelperPath() en addHelperPath() methodes te gebruiken.
  139. </para>
  140. <programlisting role="php"><![CDATA[<?php
  141. $view = new Zend_View();
  142. $view->setHelperPath('/pad/naar/meer/helpers');
  143. ?>]]>
  144. </programlisting>
  145. <para>
  146. In feite kan je paden "opstapelen" door de addHelperPath()
  147. methode te gebruiken. Terwijl je paden aan de stapel toevoegt
  148. zal Zned_Viewer steeds in het meest-recent-toegevoegde pad
  149. naar de gevraagde helper klasse zoeken. Dit laat je toe de
  150. initiële distributie van helpers uit te breiden (of zelfs te
  151. vervangen) door je eigen persoonlijke helpers.
  152. </para>
  153. <programlisting role="php"><![CDATA[<?php
  154. $view = new Zend_View();
  155. $view->addHelperPath('/pad/naar/enige/helpers');
  156. $view->addHelperPath('/ander/pad/naar/helpers');
  157. // wanneer je nu $this->helperName() oproept zal Zend_View eerst kijken naar
  158. // "/other/path/to/helpers/HelperName.php", dan naar
  159. // "/path/to/some/helpers/HelperName", en uiteindelijk naar
  160. // "Zend/View/Helpers/HelperName.php".
  161. ?>]]>
  162. </programlisting>
  163. </sect2>
  164. <sect2 id="zend.view.helpers.custom">
  165. <title>Je eigen Helpers schrijven</title>
  166. <para>
  167. Je eigen helpers schrijven is gemakkelijk. Volg gewoon deze regels:
  168. </para>
  169. <itemizedlist>
  170. <listitem><para>
  171. De klassenaam moet Zend_View_Helper_* zijn, waar * de naam
  172. van de helper zelf is. Bijvoorbeeld, als je een helper
  173. genaamd "speciaalDoel" schrijft zou de klassenaam
  174. "Zend_View_Helper_SpeciaalDoel" zijn (let op de hoofdletters).
  175. </para></listitem>
  176. <listitem><para>
  177. De klasse moet een publieke methode hebben die overeenkomt
  178. met de helpernaam; dit is de methode die zal worden
  179. opgeroepen wanneer je template "$this->speciaalDoel()"
  180. oproept. In ons "speciaalDoel" helpervoorbeeld zou de
  181. verplichte methodeverklaring "public function speciaalDoel()"
  182. zijn.
  183. </para></listitem>
  184. <listitem><para>
  185. In het algemeen zou de klasse niets moeten printen, echo-en of
  186. op eender welke andere wijze output genereren. In plaats daarvan
  187. zou het waarden moeten terugsturen die kunnen worden geprint of
  188. ge-echod. De teruggestuurde waarden moeten korrekt worden
  189. ge-escaped.
  190. </para></listitem>
  191. <listitem><para>
  192. De klasse moet in een bastand worden opgeslaan dat genoemd is
  193. naar de helper methode. Voortbouwend op ons "speciaalDoel" helper
  194. voorbeeld, moet het bestand "SpeciaalDoel.php" noemen.
  195. </para></listitem>
  196. </itemizedlist>
  197. <para>
  198. Plaats het helper klasse bestand ergens in je helper pad stapel en
  199. Zend_View zal het automatisch laden, instantiëren en uitvoeren.
  200. </para>
  201. <para>
  202. Hier is een voorbeeld van onze SpeciaalDoel helpercode:
  203. </para>
  204. <programlisting role="php"><![CDATA[<?php
  205. class Zend_View_Helper_SpeciaalDoel {
  206. protected $_count = 0;
  207. public function speciaalDoel()
  208. {
  209. $this->_count++;
  210. $output = "Ik heb 'The Jerk' {$this->_count} keer gezien.";
  211. return htmlspecialchars($output);
  212. }
  213. }
  214. ?>]]>
  215. </programlisting>
  216. <para>
  217. Je kan de SpeciaalDoel helper zoveel keer oproepen als je
  218. wil een een view script; het zal éénmaal geïnstantieerd worden,
  219. en is dan blijvend aanwezig voor de gehele leefduur van de
  220. Zend_View instantie.
  221. </para>
  222. <programlisting role="php"><![CDATA[<?php
  223. // denk eraan: in een view script verwijst $this naar de Zend_View instantie.
  224. echo $this->speciaalDoel();
  225. echo $this->speciaalDoel();
  226. echo $this->speciaalDoel();
  227. ?>]]>
  228. </programlisting>
  229. <para>
  230. De output zou hierop moeten lijken:
  231. </para>
  232. <programlisting role="php"><![CDATA[Ik heb 'The Jerk' 1 keer gezien.
  233. Ik heb 'The Jerk' 2 keer gezien.
  234. Ik heb 'The Jerk' 3 keer gezien.]]>
  235. </programlisting>
  236. </sect2>
  237. </sect1>
  238. <!--
  239. vim:se ts=4 sw=4 et:
  240. -->