Zend_View-Helpers.xml 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 14811 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.view.helpers" xmlns:xi="http://www.w3.org/2001/XInclude">
  5. <title>Aides de vue</title>
  6. <para>Dans vos scripts de vue, il est souvent nécessaire d'effectuer certaines actions complexes encore et encore :
  7. par exemple, formater une date, générer des éléments de formulaire, afficher des liens d'action. Vous pouvez
  8. utiliser des classes d'aide pour effectuer ce genre de tâches.</para>
  9. <para>Une aide est simplement une classe. Par exemple, nous voulons une aide nommée "foobar". Par défaut, la classe
  10. est préfixée avec <code>"Zend_View_Helper_"</code> (vous pouvez spécifier un préfixe personnalisé en paramétrant
  11. votre chemin d'aide), et le dernier segment du nom de classe est le nom de l'aide ; ce segment peut être avec des
  12. CaracteresMajuscules ; le nom complet de la classe est alors : <classname>Zend_View_Helper_FooBar</classname>. Cette classe
  13. doit contenir au moins une méthode, nommée comme l'aide avec la notationCamel : <code>fooBar()</code>.</para>
  14. <note>
  15. <title>Surveillez la casse</title>
  16. <para>Les noms des aides sont toujours en notationCamel, c'est-à-dire qu'ils ne commencent pas avec un caractère
  17. majuscule. Le nom de classe elle-même peut être en casseMélangée, mais la méthode qui est exécutée est en
  18. notationCamel.</para>
  19. </note>
  20. <para>Pour utiliser une aide dans votre script de vue, appelez la en utilisant <code>$this-&gt;nomAide()</code>.
  21. Dans les coulisses, <classname>Zend_View</classname> va charger la classe <classname>Zend_View_Helper_NomAide</classname>, créer une
  22. instance de cet objet, et appeler sa méthode <code>nomAide()</code>. L'instance de l'objet est persistante dans
  23. l'instance de <classname>Zend_View</classname>, et est réutilisée pour tous les appels futurs à
  24. <code>$this-&gt;nomAide()</code>.</para>
  25. <sect2 id="zend.view.helpers.initial">
  26. <title>Aides initiales</title>
  27. <para><classname>Zend_View</classname> fournit avec un jeu initial de classes d'aides, la plupart est liée à la génération
  28. d'éléments de formulaire. Chacune affiche et échappe l'élément automatiquement. De plus, il existe des aides
  29. pour créer des URLs sur la base de routes et des listes HTML, de la même manière que l'on déclarerait des
  30. variables. Les aides actuellement incluses sont :</para>
  31. <itemizedlist>
  32. <listitem>
  33. <para><code>declareVars()</code> : initialement prévu pour être utilisé avec <code>strictVars()</code>,
  34. cette aide peut être utilisée pour déclarer les variables de modèle ("template") qui sont (ou pas) déjà
  35. déclarées dans l'objet de vue, ou pour gérer des valeurs par défaut. Les tableaux passés comme arguments
  36. à la méthode seront utilisés pour paramétrer des valeurs par défaut ; sinon, si la variable n'existe
  37. pas, on lui affecte une chaîne vide.</para>
  38. </listitem>
  39. <listitem>
  40. <para><code>fieldset($name, $content, $attribs)</code> : crée un ensemble de champs XHTML. Si
  41. <code>$attribs</code> contient une clé "legend", cette valeur sera utilisée comme légende du fieldset.
  42. Le fieldset entourera le contenu <code>$content</code> tel qu'il aura été fourni à l'aide.</para>
  43. </listitem>
  44. <listitem>
  45. <para><code>form($name, $attribs, $content)</code> : génère un formulaire XHTML. Tous les éléments
  46. <code>$attribs</code> sont échappés et rendus sous la forme d'attributs de la balise "form". Si
  47. <code>$content</code> est présent et n'est pas un booléen valant <code>false</code>, alors ce contenu
  48. est rendu à l'intérieur des balises "form" ; si <code>$content</code> est un booléen valant
  49. <code>false</code> (par défaut), seul la balise ouvrante "form" est générée.</para>
  50. </listitem>
  51. <listitem>
  52. <para><code>formButton($name, $value, $attribs)</code> : crée un élément &lt;button /&gt;.</para>
  53. </listitem>
  54. <listitem>
  55. <para><code>formCheckbox($name, $value, $attribs, $options):</code> crée un élément &lt;input
  56. type="checkbox" /&gt;.</para>
  57. <para>Par défaut, quand aucune <code>$value</code> n'est fournie et qu'aucune <code>$options</code>
  58. n'est présente, alors "0" est considéré comme la valeur non cochée et "1" comme la valeur cochée. Si une
  59. <code>$value</code> est fournie, mais qu'aucune <code>$options</code> n'est présente, l'état coché est
  60. considéré égal à la <code>$value</code> fournie.</para>
  61. <para><code>$options</code> devrait être un tableau. Si ce tableau est indexé, la première valeur est la
  62. valeur cochée, la seconde est la valeur non cochée ; et tout autre valeur est ignorée. Vous pouvez aussi
  63. passer un tableau associatif avec les clés "<code>checked</code>" et "<code>unChecked</code>".</para>
  64. <para>Si <code>$options</code> est fourni, et que <code>$value</code> correspond à la valeur cochée,
  65. alors l'élément sera marqué comme coché. Vous pouvez aussi marquer l'élément comme coché ou décoché en
  66. passant une valeur booléenne à l'attribut "<code>checked</code>".</para>
  67. <para>Ceci pourra sûrement être plus explicite avec quelques exemples :</para>
  68. <programlisting role="php"><![CDATA[
  69. // "1" et "0" en tant qu'options cochée/décochée ; cochée
  70. echo $this->formCheckbox('foo');
  71. // "1" et "0" en tant qu'options cochée/décochée ; cochée
  72. echo $this->formCheckbox('foo', null, array('checked' => true));
  73. // "bar" et "0" en tant qu'options cochée/décochée ; décochée
  74. echo $this->formCheckbox('foo', 'bar');
  75. // "bar" et "0" en tant qu'options cochée/décochée ; cochée
  76. echo $this->formCheckbox('foo', 'bar', array('checked' => true));
  77. // "bar" et "baz" en tant qu'options cochée/décochée ; décochée
  78. echo $this->formCheckbox('foo', null, null, array('bar', 'baz');
  79. // "bar" et "baz" en tant qu'options cochée/décochée ; décochée
  80. echo $this->formCheckbox('foo', null, null, array(
  81. 'checked' => 'bar',
  82. 'unChecked' => 'baz'
  83. ));
  84. // "bar" et "baz" en tant qu'options cochée/décochée ; cochée
  85. echo $this->formCheckbox('foo', 'bar', null, array('bar', 'baz');
  86. echo $this->formCheckbox('foo',
  87. null,
  88. array('checked' => true),
  89. array('bar', 'baz');
  90. // "bar" et "baz" en tant qu'options cochée/décochée ; décochée
  91. echo $this->formCheckbox('foo', 'baz', null, array('bar', 'baz');
  92. echo $this->formCheckbox('foo',
  93. null,
  94. array('checked' => false),
  95. array('bar', 'baz');
  96. ]]></programlisting>
  97. <para>Dans tous les cas, la balise est précédée d'un élément masqué ("hidden") avec la valeur de l'état
  98. décoché ; ainsi, si la valeur est décochée, vous aurez toujours une valeur valide retournée par votre
  99. formulaire.</para>
  100. </listitem>
  101. <listitem>
  102. <para><code>formErrors($errors, $options)</code> : génère une liste non ordonnée XHTML pour montrer des
  103. erreurs. <code>$errors</code> peut être une chaîne de caractères ou un tableau de chaînes ;
  104. <code>$options</code> peut être tout attribut que vous pourriez vouloir placer dans la balise ouvrante
  105. de la liste.</para>
  106. <para>Vous pouvez spécifier des éléments ouvrants, fermants et des séparateurs de contenu alternatifs
  107. lors du rendu des erreurs en appelant les différentes méthodes suivantes de l'aide :</para>
  108. <itemizedlist>
  109. <listitem>
  110. <para><code>setElementStart($string)</code> ; par défaut vaut "&lt;ul
  111. class="errors"%s"&gt;&lt;li&gt;", où <code>%s</code> est remplacé avec les attributs spécifiés
  112. dans <code>$options</code>.</para>
  113. </listitem>
  114. <listitem>
  115. <para><code>setElementSeparator($string)</code> ; par défaut vaut
  116. "&lt;/li&gt;&lt;li&gt;".</para>
  117. </listitem>
  118. <listitem>
  119. <para><code>setElementEnd($string)</code> ; par défaut vaut "&lt;/li&gt;&lt;/ul&gt;".</para>
  120. </listitem>
  121. </itemizedlist>
  122. </listitem>
  123. <listitem>
  124. <para><code>formFile($name, $attribs)</code>: crée un élément &lt;input type="file"
  125. /&gt;.</para>
  126. </listitem>
  127. <listitem>
  128. <para><code>formHidden($name, $value, $attribs)</code> : crée un élément &lt;input type="hidden"
  129. /&gt;.</para>
  130. </listitem>
  131. <listitem>
  132. <para><code>formLabel($name, $value, $attribs)</code> : crée un élément &lt;label&gt;, en réglant
  133. l'attribut <code>for</code> avec <code>$name</code>, et le texte du label avec <code>$value</code>. Si
  134. <code>disable</code> est fourni via <code>attribs</code>, rien n'est retourné.</para>
  135. </listitem>
  136. <listitem>
  137. <para><code>formMultiCheckbox($name, $value, $attribs, $options, $listsep)</code> : crée une liste de
  138. cases à cocher. <code>$options</code> devrait être un tableau associatif, avec une profondeur
  139. arbitraire. <code>$value</code> peut être une valeur unique ou un tableau de valeurs sélectionnées qui
  140. correspondent aux clés du tableau <code>$options</code>. <code>$listsep</code> est un séparateur HTML
  141. ("&lt;br /&gt;") par défaut. Par défaut, cet élément est traité comme un tableau ; toutes les cases à
  142. cocher partagent le même nom, et sont soumises sous la forme d'un tableau.</para>
  143. </listitem>
  144. <listitem>
  145. <para><code>formPassword($name, $value, $attribs)</code> : crée un élément &lt;input type="password"
  146. /&gt;.</para>
  147. </listitem>
  148. <listitem>
  149. <para><code>formRadio($name, $value, $attribs, $options)</code> : crée une série d'éléments &lt;input
  150. type="button" /&gt;, un pour chaque élément <code>$options</code>. Dans le tableau
  151. <code>$options</code>, la clé de l'élément est la valeur du radio, et la valeur de l'élément est
  152. l'étiquette du radio. La radio <code>$value</code> sera précochée pour vous.</para>
  153. </listitem>
  154. <listitem>
  155. <para><code>formReset($name, $value, $attribs)</code> : crée un élément &lt;input type="reset"
  156. /&gt;.</para>
  157. </listitem>
  158. <listitem>
  159. <para><code>formSelect($name, $value, $attribs, $options)</code> : crée un bloc
  160. &lt;select&gt;...&lt;/select&gt;, avec une &lt;option&gt; pour chaque élément <code>$options</code>.
  161. Dans le tableau <code>$options</code>, la clé de l'élément est la valeur de l'option, et la valeur de
  162. l'élément est son étiquette optionnelle. L'option (ou les options) <code>$value</code> sera (ou seront)
  163. présélectionnée(s) pour vous.</para>
  164. </listitem>
  165. <listitem>
  166. <para><code>formSubmit($name, $value, $attribs)</code> : crée un élément &lt;input type="submit"
  167. /&gt;.</para>
  168. </listitem>
  169. <listitem>
  170. <para><code>formText($name, $value, $attribs)</code> : crée un élément &lt;input type="text"
  171. /&gt;.</para>
  172. </listitem>
  173. <listitem>
  174. <para><code>formTextarea($name, $value, $attribs)</code> : crée un bloc
  175. &lt;textarea&gt;...&lt;/textarea&gt;.</para>
  176. </listitem>
  177. <listitem>
  178. <para><code>url($urlOptions, $name, $reset)</code> : crée un URL basé sur une route nommée.
  179. <code>$urlOptions</code> doit être un tableau associatif avec des paires de clés/valeurs utilisées par
  180. une route particulière.</para>
  181. </listitem>
  182. <listitem>
  183. <para><code>htmlList($items, $ordered, $attribs, $escape)</code> : génère des listes ordonnées ou non
  184. basées sur les <code>$items</code> qui lui sont fournis. Si <code>$items</code> est un tableau
  185. multidimensionnel, une liste imbriquée sera construite. Si le paramètre <code>$escape</code> vaut
  186. <code>true</code> (valeur par défaut), chaque élément sera échappé en utilisant le mécanisme
  187. d'échappement enregistré dans les objets de vue ; fournissez une valeur <code>false</code> si vous
  188. voulez autoriser du balisage dans vos listes.</para>
  189. </listitem>
  190. </itemizedlist>
  191. <para>Les utiliser dans vos script de vue est très simple, voici un exemple. Notez que tout ce dont vous avez
  192. besoin, c'est de les appeler; elles vont se charger et s'instancier elle-même si besoin est.</para>
  193. <programlisting role="php"><![CDATA[
  194. <!--
  195. Dans votre script de vue, $this se réfère à l'instance de Zend_View.
  196. Partons du principe que vous avez déjà assigné une série d'options
  197. de sélection dans un tableau $pays =
  198. array('us' => 'Etats-Unis', 'fr' => 'France', 'de' => 'Allemagne').
  199. -->
  200. <form action="action.php" method="post">
  201. <p><label>Votre email :
  202. <?php echo $this->formText('email',
  203. 'vous@exemple.fr',
  204. array('size' => 32)) ?>
  205. </label></p>
  206. <p><label>Votre pays :
  207. <?php echo $this->formSelect('country',
  208. 'us',
  209. null,
  210. $this->pays) ?>
  211. </label></p>
  212. <p><label>??? Would you like to opt in ???
  213. <?php echo $this->formCheckbox('opt_in',
  214. 'oui',
  215. null,
  216. array('oui', 'non')) ?>
  217. </label></p>
  218. </form>
  219. ]]></programlisting>
  220. <para>La sortie résultante du script de vue ressemblera à ceci :</para>
  221. <programlisting role="php"><![CDATA[
  222. <form action="action.php" method="post">
  223. <p><label>Votre email :
  224. <input type="text" name="email"
  225. value="vous@exemple.fr" size="32" />
  226. </label></p>
  227. <p><label>Votre pays :
  228. <select name="country">
  229. <option value="us" selected="selected">Etats-Unis</option>
  230. <option value="fr">France</option>
  231. <option value="de">Allemagne</option>
  232. </select>
  233. </label></p>
  234. <p><label>??? Would you like to opt in ???
  235. <input type="hidden" name="opt_in" value="non" />
  236. <input type="checkbox" name="opt_in"
  237. value="oui" checked="checked" />
  238. </label></p>
  239. </form>
  240. ]]></programlisting>
  241. <xi:include href="Zend_View-Helpers-Action.xml" />
  242. <xi:include href="Zend_View-Helpers-Cycle.xml">
  243. <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Cycle.xml" /></xi:fallback>
  244. </xi:include>
  245. <xi:include href="Zend_View-Helpers-Partial.xml" />
  246. <xi:include href="Zend_View-Helpers-Placeholder.xml" />
  247. <xi:include href="Zend_View-Helpers-Doctype.xml" />
  248. <xi:include href="Zend_View-Helpers-HeadLink.xml" />
  249. <xi:include href="Zend_View-Helpers-HeadMeta.xml" />
  250. <xi:include href="Zend_View-Helpers-HeadScript.xml" />
  251. <xi:include href="Zend_View-Helpers-HeadStyle.xml" />
  252. <xi:include href="Zend_View-Helpers-HeadTitle.xml" />
  253. <xi:include href="Zend_View-Helpers-HtmlObject.xml" />
  254. <xi:include href="Zend_View-Helpers-InlineScript.xml" />
  255. <xi:include href="Zend_View-Helpers-Json.xml" />
  256. <xi:include href="Zend_View-Helpers-Navigation.xml">
  257. <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Navigation.xml" /></xi:fallback>
  258. </xi:include>
  259. <xi:include href="Zend_View-Helpers-Translate.xml" />
  260. </sect2>
  261. <sect2 id="zend.view.helpers.paths">
  262. <title>Chemin des aides</title>
  263. <para>Comme pour les scripts de vue, votre contrôleur peut spécifier une pile de chemins dans lesquels
  264. <classname>Zend_View</classname> cherchera les classes d'aides. Par défaut, <classname>Zend_View</classname> cherche dans
  265. "Zend/View/Helper/*". Vous pouvez dire à <classname>Zend_View</classname> de regarder dans d'autres chemins en utilisant
  266. les méthodes <code>setHelperPath()</code> et <code>addHelperPath()</code>. De plus, vous pouvez indiquer un
  267. préfixe de classe pour utiliser les aides dans le répertoire fourni, et permettre de donner des espaces de noms
  268. à vos classes d'aide. Par défaut, si aucun préfixe n'est fourni, "Zend_View_Helper_" est utilisé.</para>
  269. <programlisting role="php"><![CDATA[
  270. $view = new Zend_View();
  271. $view->setHelperPath('/chemin/vers/plus/de/classes/d-aides',
  272. 'Ma_View_Helper');
  273. ]]></programlisting>
  274. <para>En fait, vous pouvez "empiler" les chemins en utilisant la méthode <code>addHelperPath()</code>. Comme
  275. vous ajoutez des chemins dans la pile, <classname>Zend_View</classname> va regarder dans le chemin le plus récemment
  276. ajouté, pour inclure la classe d'aide. Cela vous permet d'ajouter (ou bien de redéfinir) la distribution
  277. initiale des aides, avec vos propres aides personnalisées.</para>
  278. <programlisting role="php"><![CDATA[
  279. $view = new Zend_View();
  280. // Ajoute /chemin/vers/des/aides avec le préfixe
  281. // de classe 'Ma_View_Helper'
  282. $view->addHelperPath('/chemin/vers/des/aides',
  283. 'Ma_View_Helper');
  284. // Ajoute /autre/chemin/vers/des/aides avec le préfixe
  285. // de classe 'Votre_View_Helper'
  286. $view->addHelperPath('/autre/chemin/vers/des/aides',
  287. 'Votre_View_Helper');
  288. // maintenant, lorsque vous appelerez $this->helperName(), Zend_View
  289. // va rechercher en premier /autre/chemin/vers/des/aides/HelperName.php
  290. // en utilisant la classe "Votre_View_Helper_HelperName", et ensuite
  291. // dans /chemin/vers/des/aides/HelperName.php en utilisant la classe
  292. // "Ma_View_Helper_HelperName", et finalement dans
  293. // Zend/View/Helpers/HelperName.php en utilisant la classe
  294. // "Zend_View_Helper_HelperName"
  295. ]]></programlisting>
  296. </sect2>
  297. <sect2 id="zend.view.helpers.custom">
  298. <title>Écrire des aides personnalisées</title>
  299. <para>Écrire des aides personnalisées est facile, vous devez juste suivre ces règles :</para>
  300. <itemizedlist>
  301. <listitem>
  302. <para>Bien qu'il ne soit pas strictement nécessaire, il est recommandé soit d'implémenter
  303. <classname>Zend_View_Helper_Interface</classname> ou d'étendre <classname>Zend_View_Helper_Abstract</classname> quand vous
  304. créez vos aides. Introduit en 1.6.0, ceux-ci définissent la méthode <code>setView()</code> ; cependant,
  305. dans les prochaines releases, nous prévoyons d'implémenter un motif de conception Stratégie qui
  306. permettra de simplifier en grande partie le schéma de nomination détaillé ci-dessous. Contruire sur ces
  307. bases à partir de maintenant vous aidera pour vos codes futurs.</para>
  308. </listitem>
  309. <listitem>
  310. <para>Le nom de la classe doit, au minimum, se terminer avec le nom de l'aide en utilisant une notation
  311. en casseMélangée. Par exemple, si vous écrivez une aide appelée "actionSpeciale", le nom de la classe
  312. doit être au minimum "ActionSpeciale". Vous devriez donner au nom de la classe un préfixe, et il est
  313. recommandé d'utiliser "Ma_View_Helper" comme partie de ce préfixe : "Ma_View_Helper_ActionSpeciale".
  314. (Vous devez alors fournir le préfixe, avec ou sans le tiret bas, à <code>addHelperPath()</code> ou à
  315. <code>setHelperPath()</code>).</para>
  316. </listitem>
  317. <listitem>
  318. <para>La classe doit avoir une méthode publique dont le nom correspond au nom de l'aide ; c'est la
  319. méthode qui sera appelée quand votre template appellera <code>$this-&gt;actionSpeciale()</code>. Dans
  320. notre exemple <code>$this-&gt;actionSpeciale()</code>, la déclaration de méthode requise serait
  321. <code>public function actionSpeciale()</code>.</para>
  322. </listitem>
  323. <listitem>
  324. <para>En général, la classe ne devrait pas afficher directement les données (via <code>echo</code> ou
  325. <code>print</code>). Elle devrait retourner les valeurs pour être ensuite affichées. Les valeurs
  326. retournées devrait être échappées de façon appropriées.</para>
  327. </listitem>
  328. <listitem>
  329. <para>La classe doit être dans un fichier ayant le même nom que la méthode d'aide. Si on utilise la
  330. méthode <code>actionSpeciale()</code>, le fichier devra être nommé "ActionSpeciale.php"</para>
  331. </listitem>
  332. </itemizedlist>
  333. <para>Placez le fichier de classe d'aide quelque part dans la pile des chemins d'aide, et <classname>Zend_View</classname>
  334. le chargera, l'instanciera, le rendra persistant, et l'exécutera automatiquement pour vous.</para>
  335. <para>Voici un exemple de fichier "ActionSpeciale.php" :</para>
  336. <programlisting role="php"><![CDATA[
  337. class Ma_View_Helper_ActionSpeciale
  338. {
  339. protected $_count = 0;
  340. public function actionSpeciale()
  341. {
  342. $this->_count++;
  343. $output = "J'ai vu 'The Big Lebowsky' {$this->_count} fois.";
  344. return htmlspecialchars($output);
  345. }
  346. }
  347. ]]></programlisting>
  348. <para>Ensuite, dans un script de vue, vous pouvez appeler l'aide <code>ActionSpeciale</code> autant de fois que
  349. vous le souhaitez ; elle sera instanciée une fois, et rendue persistante pendant toute la vie de l'instance de
  350. <classname>Zend_View</classname>.</para>
  351. <programlisting role="php"><![CDATA[
  352. // rappelez vous, $this se réfère à l'instance de Zend_View
  353. echo $this->actionSpeciale();
  354. echo $this->actionSpeciale();
  355. echo $this->actionSpeciale();
  356. ]]></programlisting>
  357. <para>La sortie pourrait alors ressembler à ceci :</para>
  358. <programlisting role="php"><![CDATA[
  359. J'ai vu 'The Big Lebowsky' 1 fois.
  360. J'ai vu 'The Big Lebowsky' 2 fois.
  361. J'ai vu 'The Big Lebowsky' 3 fois.
  362. ]]></programlisting>
  363. <para>Quelquefois vous devez accéder à l'objet <classname>Zend_View</classname> appelant - par exemple, si vous devez
  364. utiliser l'encodage enregistré ou voulez effectuer le rendu d'un autre script de vue comme une sous partie de
  365. votre aide. Pour avoir accès à votre objet de vue, votre classe d'aide doit avoir une méthode
  366. <code>setView($view)</code>, comme ceci :</para>
  367. <programlisting role="php"><![CDATA[
  368. class Ma_View_Helper_ScriptPath
  369. {
  370. public $view;
  371. public function setView(Zend_View_Interface $view)
  372. {
  373. $this->view = $view;
  374. }
  375. public function scriptPath($script)
  376. {
  377. return $this->view->getScriptPath($script);
  378. }
  379. }
  380. ]]></programlisting>
  381. <para>Si votre classe d'aide a une méthode <code>setView()</code>, elle sera appelée quand votre classe sera
  382. instanciée la première fois et fournira l'objet de la vue courante. Il est de votre responsabilité de maintenir
  383. la persistance de l'objet dans votre classe, de même que de déterminer la façon dont il peut être
  384. accéder.</para>
  385. </sect2>
  386. </sect1>