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