Zend_View-Helpers-Placeholder.xml 9.2 KB

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