| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- <sect1 id="zend.view.helpers">
- <title>View Helpers</title>
- <para>
- In je view scripts is het dikwijls nodig een aantal complexe
- functies steeds weer uit te voeren, bv: een datum formateren,
- formulierelementen genereren of aktielinks afbeelden. Je kan
- helper klassen gebruiken om deze gedragingen voor jou uit te
- voeren.
- </para>
- <para>
- Om een helper in jouw script te gebruiken moet je het oproepen
- door $this->helperName() te gebruiken. Achter de scène zal
- Zend_View de Zend_View_Helper klasse laden, een instantie van het
- objekt maken en zijn helperName() methode oproepen. De
- instantie van het objekt is Behind the scenes, Zend_View will load the
- Zend_View_Helper_HelperName class, create an object instance of
- it, and call its helperName() method. The object instance is
- blijvend in de Zend_View instantie, en is hergebruikt voor alle
- verdere oproepen aan $this->helperName().
- </para>
- <sect2 id="zend.view.helpers.initial">
- <title>Initiële Helpers</title>
- <para>
- Zend_View komt met een set van initiële helper klassen die
- allemaal relatief zijn aan formulierelementen generatie. Ze
- doen elk automatisch de juiste output escaping. Ze zijn:
- </para>
- <itemizedlist>
- <listitem><para>
- formButton($name, $value, $attribs): Maakt een <input
- type="button" /> element.
- </para></listitem>
- <listitem><para>
- formCheckbox($name, $value, $attribs, $options): maakt
- een <input type="checkbox" /> element. De
- $options parameter is een array waar de eerste waarde de
- "checked" waarde is, en de tweede waarde de "unchecked" waarde
- (standaard waarden '1' en '0'). Als $value overeenkomt met de
- "checked" waarde, zal de checkbox aangezet worden.
- </para></listitem>
- <listitem><para>
- formFile($name, $value, $attribs): Maakt een <input
- type="file" /> element.
- </para></listitem>
- <listitem><para>
- formHidden($name, $value, $attribs): Maakt een <input
- type="hidden" /> element.
- </para></listitem>
- <listitem><para>
- formPassword($name, $value, $attribs): Maakt een <input
- type="password" /> element.
- </para></listitem>
- <listitem><para>
- formRadio($name, $value, $attribs, $options): Maakt een serie
- <input type="radio" /> elementen, één voor elk van de
- $options elementen. In de $options array is de element
- key de radio waarde en de elementwaarde is de radiolabel.
- De $value radio zal worden voorgeselecteerd.
- </para></listitem>
- <listitem><para>
- formReset($name, $value, $attribs): Maakt een <input
- type="reset" /> element.
- </para></listitem>
- <listitem><para>
- formSelect($name, $value, $attribs, $options): Maakt een
- <select>...</select> blok met één
- <option> voor elk van de $options elementen. In
- de $options array is de element key de optiewaarde en de
- elementwaarde is de optielabel. De $value optie(s)
- zal/zullen worden voorgeselecteerd.
- </para></listitem>
- <listitem><para>
- formSubmit($name, $value, $attribs): Maakt een <input
- type="submit" /> element.
- </para></listitem>
- <listitem><para>
- formText($name, $value, $attribs): Maakt een <input
- type="text" /> element.
- </para></listitem>
- <listitem><para>
- formTextarea($name, $value, $attribs): Maakt een
- <textarea>...</textarea> blok.
- </para></listitem>
- </itemizedlist>
- <para>
- Deze gebruiken in je scripts is heel eenvoudig. Hier is een voorbeeld.
- Merk op dat het enige je hoeft te doen is ze op te roepen, ze laden en
- instantiëren zichzelf wanneer dat nodig is.
- </para>
- <programlisting role="php"><![CDATA[<?php
- // binnenin je view script verwijst $this naar de Zend_View instantie.
- //
- // veronderstel dat je reeds een serie select opties hebt toegewezen onder de naam
- // $landen als Array('us' => 'Verenigde Staten', 'il' =>
- // 'Israël', 'be' => 'België', 'nl' => 'Nederland').
- ?>
- <form action="aktie.php" method="post">
- <p><label>Jouw Email:
- <?php echo $this->formText('email', 'you@example.com', array('size' => 32)) ?>
- </label></p>
- <p><label>Je land:
- <?php echo $this->formSelect('country', 'be', null, $this->landen) ?>
- </label></p>
- <p><label>Zou je je graag inschrijven ?
- <?php echo $this->formCheckbox('opt_in', 'ja', null, array('ja', 'nee')) ?>
- </label></p>
- </form>]]>
- </programlisting>
- <para>
- Het resultaat van het view script zal op het volgende lijken:
- </para>
- <programlisting role="php"><![CDATA[<form action="aktie.php" method="post">
- <p><label>Jouw Email:
- <input type="text" name="email" value="you@example.com" size="32" />
- </label></p>
- <p><label>Je land:
- <select name="country">
- <option value="us">Verenigde Staten</option>
- <option value="il">Israël</option>
- <option value="be" selected="selected">België</option>
- <option value="nl">Nederland</option>
- </select>
- </label></p>
- <p><label>Zou je je graag inschrijven ?
- <input type="hidden" name="opt_in" value="nee" />
- <input type="checkbox" name="opt_in" value="ja" checked="checked" />
- </label></p>
- </form>]]>
- </programlisting>
- </sect2>
- <sect2 id="zend.view.helpers.paths">
- <title>Helper Paden</title>
- <para>
- Zoals met view scripts kan de controller een stapel van paden
- specifiëren waar Zend_View naar helper klassen moet zoeken.
- Standaard kijkt Zend_View in "Zend/View/Helper/*" voor helper
- klassen. Je kan Zend_View vertellen in andere plaatsen te kijken
- door de setHelperPath() en addHelperPath() methodes te gebruiken.
- </para>
- <programlisting role="php"><![CDATA[<?php
- $view = new Zend_View();
- $view->setHelperPath('/pad/naar/meer/helpers');
- ?>]]>
- </programlisting>
- <para>
- In feite kan je paden "opstapelen" door de addHelperPath()
- methode te gebruiken. Terwijl je paden aan de stapel toevoegt
- zal Zned_Viewer steeds in het meest-recent-toegevoegde pad
- naar de gevraagde helper klasse zoeken. Dit laat je toe de
- initiële distributie van helpers uit te breiden (of zelfs te
- vervangen) door je eigen persoonlijke helpers.
- </para>
- <programlisting role="php"><![CDATA[<?php
- $view = new Zend_View();
- $view->addHelperPath('/pad/naar/enige/helpers');
- $view->addHelperPath('/ander/pad/naar/helpers');
- // wanneer je nu $this->helperName() oproept zal Zend_View eerst kijken naar
- // "/other/path/to/helpers/HelperName.php", dan naar
- // "/path/to/some/helpers/HelperName", en uiteindelijk naar
- // "Zend/View/Helpers/HelperName.php".
- ?>]]>
- </programlisting>
- </sect2>
- <sect2 id="zend.view.helpers.custom">
- <title>Je eigen Helpers schrijven</title>
- <para>
- Je eigen helpers schrijven is gemakkelijk. Volg gewoon deze regels:
- </para>
- <itemizedlist>
- <listitem><para>
- De klassenaam moet Zend_View_Helper_* zijn, waar * de naam
- van de helper zelf is. Bijvoorbeeld, als je een helper
- genaamd "speciaalDoel" schrijft zou de klassenaam
- "Zend_View_Helper_SpeciaalDoel" zijn (let op de hoofdletters).
- </para></listitem>
- <listitem><para>
- De klasse moet een publieke methode hebben die overeenkomt
- met de helpernaam; dit is de methode die zal worden
- opgeroepen wanneer je template "$this->speciaalDoel()"
- oproept. In ons "speciaalDoel" helpervoorbeeld zou de
- verplichte methodeverklaring "public function speciaalDoel()"
- zijn.
- </para></listitem>
- <listitem><para>
- In het algemeen zou de klasse niets moeten printen, echo-en of
- op eender welke andere wijze output genereren. In plaats daarvan
- zou het waarden moeten terugsturen die kunnen worden geprint of
- ge-echod. De teruggestuurde waarden moeten korrekt worden
- ge-escaped.
- </para></listitem>
- <listitem><para>
- De klasse moet in een bastand worden opgeslaan dat genoemd is
- naar de helper methode. Voortbouwend op ons "speciaalDoel" helper
- voorbeeld, moet het bestand "SpeciaalDoel.php" noemen.
- </para></listitem>
- </itemizedlist>
- <para>
- Plaats het helper klasse bestand ergens in je helper pad stapel en
- Zend_View zal het automatisch laden, instantiëren en uitvoeren.
- </para>
- <para>
- Hier is een voorbeeld van onze SpeciaalDoel helpercode:
- </para>
- <programlisting role="php"><![CDATA[<?php
- class Zend_View_Helper_SpeciaalDoel {
- protected $_count = 0;
- public function speciaalDoel()
- {
- $this->_count++;
- $output = "Ik heb 'The Jerk' {$this->_count} keer gezien.";
- return htmlspecialchars($output);
- }
- }
- ?>]]>
- </programlisting>
- <para>
- Je kan de SpeciaalDoel helper zoveel keer oproepen als je
- wil een een view script; het zal éénmaal geïnstantieerd worden,
- en is dan blijvend aanwezig voor de gehele leefduur van de
- Zend_View instantie.
- </para>
- <programlisting role="php"><![CDATA[<?php
- // denk eraan: in een view script verwijst $this naar de Zend_View instantie.
- echo $this->speciaalDoel();
- echo $this->speciaalDoel();
- echo $this->speciaalDoel();
- ?>]]>
- </programlisting>
- <para>
- De output zou hierop moeten lijken:
- </para>
- <programlisting role="php"><![CDATA[Ik heb 'The Jerk' 1 keer gezien.
- Ik heb 'The Jerk' 2 keer gezien.
- Ik heb 'The Jerk' 3 keer gezien.]]>
- </programlisting>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|