Zend_View-Helpers-Placeholder.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.view.helpers.initial.placeholder">
  5. <title>L'aide de vue Placeholder</title>
  6. <note>
  7. <para>
  8. NDT. : Le terme "placeholder est conservé car sa signification varie en fonction
  9. du contexte : conteneur générique ou emplacement réservé.
  10. </para>
  11. </note>
  12. <para>
  13. L'aide de vue <code>Placeholder</code> est utilisé pour faire persister le contenu
  14. entre les scripts de vues et les instances de vues. Il offre aussi des fonctionnalités
  15. utiles comme l'agrégation de contenu, la capture de contenu de scripts de vues pour une
  16. utilisation ultérieure, et l'ajout de texte pré ou post contenu (et la personnalisation des
  17. séparateurs de contenu).
  18. </para>
  19. <example id="zend.view.helpers.initial.placeholder.usage">
  20. <title>Utilisation basique des Placeholders</title>
  21. <para>
  22. L'utilisation basique des placeholders est la persistance des données de vue.
  23. Chaque appel de l'aide <code>Placeholder</code> attend un nom de placeholder ; l'aide
  24. retourne un objet conteneur que vous pouvez soit manipuler ou simplement envoyé à
  25. l'affichage.
  26. </para>
  27. <programlisting language="php"><![CDATA[
  28. <?php $this->placeholder('foo')->set("Du texte pour plus tard") ?>
  29. <?php
  30. echo $this->placeholder('foo');
  31. // outputs "Du texte pour plus tard"
  32. ?>
  33. ]]></programlisting>
  34. </example>
  35. <example id="zend.view.helpers.initial.placeholder.aggregation">
  36. <title>Utilisation des Placeholders pour agréger du contenu</title>
  37. <para>
  38. L'agrégation du contenu via les placeholders peut être aussi utile parfois. Par
  39. exemple, votre script de vue peut avoir une variable sous forme de tableau à partir de
  40. laquelle vous souhaitez récupérer des messages à afficher plus tard ; un autre script de
  41. vue peut ensuite déterminer de la manière suivant laquelle ils seront affichés.
  42. </para>
  43. <para>
  44. L'aide de vue <code>Placeholder</code> utilise des conteneurs qui étendent
  45. <code>ArrayObject</code>, fournissant de riches fonctionnalités de manipulations des
  46. tableaux. De plus, il offre une variété de méthodes pour le formatage du contenu stockée
  47. dans le conteneur :
  48. </para>
  49. <itemizedlist>
  50. <listitem>
  51. <para>
  52. <methodname>setPrefix($prefix)</methodname> paramètre le texte qui sera placé
  53. préalablement à tout le contenu. Utilisez <methodname>getPrefix()</methodname> à tout moment
  54. pour déterminer le réglage courant.
  55. </para>
  56. </listitem>
  57. <listitem>
  58. <para>
  59. <methodname>setPostfix($prefix)</methodname> paramètre le texte qui sera placé après
  60. tout le contenu. Utilisez <methodname>getPostfix()</methodname> à tout moment pour
  61. déterminer le réglage courant.
  62. </para>
  63. </listitem>
  64. <listitem>
  65. <para>
  66. <methodname>setSeparator($prefix)</methodname> paramètre le texte qui sera placé entre
  67. chaque élément de contenu. Utilisez <methodname>getSeparator()</methodname> à tout moment
  68. pour déterminer le réglage courant.
  69. </para>
  70. </listitem>
  71. <listitem>
  72. <para>
  73. <methodname>setIndent($prefix)</methodname> peut être utilisé pour paramétrer une
  74. indentation pour chaque élément du contenu. Si un entier est fourni, il s'agira
  75. du nombre d'espaces à utiliser ; si une chaîne est fournie, elle sera utilisée.
  76. Utilisez <methodname>getIndent()</methodname> à tout moment pour déterminer le réglage
  77. courant.
  78. </para>
  79. </listitem>
  80. </itemizedlist>
  81. <programlisting language="php"><![CDATA[
  82. <!-- premier script de vue -->
  83. <?php $this->placeholder('foo')->exchangeArray($this->data) ?>
  84. ]]></programlisting>
  85. <programlisting language="php"><![CDATA[
  86. <!-- autre script (plus tard) -->
  87. <?php
  88. $this->placeholder('foo')->setPrefix("<ul>\n <li>")
  89. ->setSeparator("</li><li>\n")
  90. ->setIndent(4)
  91. ->setPostfix("</li></ul>\n");
  92. ?>
  93. <?php
  94. echo $this->placeholder('foo');
  95. // affiche une liste non-ordonnée avec une belle indentation
  96. ?>
  97. ]]></programlisting>
  98. <para>
  99. Puisque l'objet conteneur <code>Placeholder</code> étend <code>ArrayObject</code>,
  100. vous pouvez ainsi facilement assigner du contenu à une clé du conteneur en particulier,
  101. plutôt que de simplement de les envoyer les unes après les autres ("push"). Les clés
  102. peuvent être accédées soit en utilisant les propriétés d'objet ou comme les clés d'un
  103. tableau.
  104. </para>
  105. <programlisting language="php"><![CDATA[
  106. <?php $this->placeholder('foo')->bar = $this->data ?>
  107. <?php echo $this->placeholder('foo')->bar ?>
  108. <?php
  109. $foo = $this->placeholder('foo');
  110. echo $foo['bar'];
  111. ?>
  112. ]]></programlisting>
  113. </example>
  114. <example id="zend.view.helpers.initial.placeholder.capture">
  115. <title>Utilisation des Placeholders pour capturer le contenu</title>
  116. <para>
  117. Occasionnellement vous pouvez avoir du contenu pour un placeholder dans un script
  118. de vue qui est simple à mettre sous forme de modèle ("template") ; l'aide de vue
  119. <code>Placeholder</code> vous permet de capturer tout contenu arbitraire pour un rendu
  120. ultérieur en utilisant l'API suivante.
  121. </para>
  122. <itemizedlist>
  123. <listitem>
  124. <para>
  125. <methodname>captureStart($type, $key)</methodname> commence la capture de
  126. contenu.
  127. </para>
  128. <para>
  129. <varname>$type</varname> doit être une des constantes de
  130. <code>Placeholder</code> : <constant>APPEND</constant> ou <constant>SET</constant>. Si c'est
  131. <constant>APPEND</constant>, le contenu capturé est ajouté à la liste de contenu courant
  132. dans le placeholder ; si c'est <constant>SET</constant>, le contenu capturé remplace
  133. toute valeur existante dans le placeholder (potentiellement permet de remplacer
  134. tout contenu préalable). Par défaut, <varname>$type</varname> vaut
  135. <constant>APPEND</constant>.
  136. </para>
  137. <para>
  138. <varname>$key</varname> peut être utilisé pour spécifier une clé en particulier
  139. dans le conteneur placeholder dans laquelle vous souhaitez capturer le
  140. contenu.
  141. </para>
  142. <para>
  143. <methodname>captureStart()</methodname> verrouille la capture jusqu'à l'appel de
  144. <methodname>captureEnd()</methodname> ; vous ne pouvez pas imbriquer des captures avec le
  145. même conteneur placeholder. Le faire entraînera la levée d'une exception.
  146. </para>
  147. </listitem>
  148. <listitem>
  149. <para>
  150. <methodname>captureEnd()</methodname> stoppe la capture de contenu, et le place dans
  151. l'objet conteneur suivant la manière utilisée pour appeler
  152. <methodname>captureStart()</methodname>.
  153. </para>
  154. </listitem>
  155. </itemizedlist>
  156. <programlisting language="php"><![CDATA[
  157. <!-- Default capture: append -->
  158. <?php $this->placeholder('foo')->captureStart();
  159. foreach ($this->data as $datum): ?>
  160. <div class="foo">
  161. <h2><?php echo $datum->title ?></h2>
  162. <p><?php echo $datum->content ?></p>
  163. </div>
  164. <?php endforeach; ?>
  165. <?php $this->placeholder('foo')->captureEnd() ?>
  166. <?php echo $this->placeholder('foo') ?>
  167. ]]></programlisting>
  168. <programlisting language="php"><![CDATA[
  169. <!-- Capture to key -->
  170. <?php $this->placeholder('foo')->captureStart('SET', 'data');
  171. foreach ($this->data as $datum): ?>
  172. <div class="foo">
  173. <h2><?php echo $datum->title ?></h2>
  174. <p><?php echo $datum->content ?></p>
  175. </div>
  176. <?php endforeach; ?>
  177. <?php $this->placeholder('foo')->captureEnd() ?>
  178. <?php echo $this->placeholder('foo')->data ?>
  179. ]]></programlisting>
  180. </example>
  181. <sect4 id="zend.view.helpers.initial.placeholder.implementations">
  182. <title>Implémentation concrète des Placeholder</title>
  183. <para>
  184. Zend Framework embarque certaines implémentations concrètes de placeholders.
  185. Celles-ci sont destinées à des placeholders communément utilisés : doctype, titre de
  186. page, et les différents éléments &lt;head&gt;. Dans tous les cas, appeler le placeholder
  187. sans arguments retournera l'élément lui-même.
  188. </para>
  189. <para>
  190. La documentation pour chacun des éléments existe séparément, suivez les liens
  191. ci-dessous :
  192. </para>
  193. <itemizedlist>
  194. <listitem>
  195. <para><link linkend="zend.view.helpers.initial.doctype">Doctype</link></para>
  196. </listitem>
  197. <listitem>
  198. <para><link linkend="zend.view.helpers.initial.headlink">HeadLink</link></para>
  199. </listitem>
  200. <listitem>
  201. <para><link linkend="zend.view.helpers.initial.headmeta">HeadMeta</link></para>
  202. </listitem>
  203. <listitem>
  204. <para>
  205. <link
  206. linkend="zend.view.helpers.initial.headscript">HeadScript</link>
  207. </para>
  208. </listitem>
  209. <listitem>
  210. <para>
  211. <link
  212. linkend="zend.view.helpers.initial.headstyle">HeadStyle</link>
  213. </para>
  214. </listitem>
  215. <listitem>
  216. <para>
  217. <link
  218. linkend="zend.view.helpers.initial.headtitle">HeadTitle</link>
  219. </para>
  220. </listitem>
  221. <listitem>
  222. <para>
  223. <link
  224. linkend="zend.view.helpers.initial.inlinescript">InlineScript</link>
  225. </para>
  226. </listitem>
  227. </itemizedlist>
  228. </sect4>
  229. </sect3>