1 <sect1 id="zend.view.helpers">
3 <title>View Helpers</title>
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
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().
25 <sect2 id="zend.view.helpers.initial">
27 <title>Initiële Helpers</title>
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:
38 formButton($name, $value, $attribs): Maakt een <input
39 type="button" /> element.
43 formCheckbox($name, $value, $attribs, $options): maakt
44 een <input type="checkbox" /> 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.
52 formFile($name, $value, $attribs): Maakt een <input
53 type="file" /> element.
57 formHidden($name, $value, $attribs): Maakt een <input
58 type="hidden" /> element.
62 formPassword($name, $value, $attribs): Maakt een <input
63 type="password" /> element.
67 formRadio($name, $value, $attribs, $options): Maakt een serie
68 <input type="radio" /> 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.
75 formReset($name, $value, $attribs): Maakt een <input
76 type="reset" /> element.
80 formSelect($name, $value, $attribs, $options): Maakt een
81 <select>...</select> blok met één
82 <option> 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.
89 formSubmit($name, $value, $attribs): Maakt een <input
90 type="submit" /> element.
94 formText($name, $value, $attribs): Maakt een <input
95 type="text" /> element.
99 formTextarea($name, $value, $attribs): Maakt een
100 <textarea>...</textarea> blok.
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.
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)) ?>
123 <?php echo $this->formSelect('country', 'be', null, $this->landen) ?>
125 <p><label>Zou je je graag inschrijven ?
126 <?php echo $this->formCheckbox('opt_in', 'ja', null, array('ja', 'nee')) ?>
132 Het resultaat van het view script zal op het volgende lijken:
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" />
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>
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" />
156 <sect2 id="zend.view.helpers.paths">
158 <title>Helper Paden</title>
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.
168 <programlisting role="php"><![CDATA[<?php
169 $view = new Zend_View();
170 $view->setHelperPath('/pad/naar/meer/helpers');
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.
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".
197 <sect2 id="zend.view.helpers.custom">
199 <title>Je eigen Helpers schrijven</title>
202 Je eigen helpers schrijven is gemakkelijk. Volg gewoon deze regels:
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).
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()"
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
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.
239 Plaats het helper klasse bestand ergens in je helper pad stapel en
240 Zend_View zal het automatisch laden, instantiëren en uitvoeren.
244 Hier is een voorbeeld van onze SpeciaalDoel helpercode:
247 <programlisting role="php"><![CDATA[<?php
248 class Zend_View_Helper_SpeciaalDoel {
249 protected $_count = 0;
250 public function speciaalDoel()
253 $output = "Ik heb 'The Jerk' {$this->_count} keer gezien.";
254 return htmlspecialchars($output);
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
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();
276 De output zou hierop moeten lijken:
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.]]>