Zend_View-Helpers-Placeholder.xml 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15617 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.view.helpers.initial.placeholder">
  5. <title>Platzhalter (PlaceHolder) Helfer</title>
  6. <para>
  7. Der <code>Placeholder</code> View Helfer wird verwendet um Inhalte zwischen View Skripten
  8. und View Instanzen persistent zu machen. Er bietet auch einige nützliche Features wie
  9. Inhalte zu vereinigen, Inhalte von View Skripten zu erfassen und Vor- sowie Nach-Texte zu
  10. Inhalten hinzuzufügen (und eigene Separatoren für vereinigte Inhalte).
  11. </para>
  12. <example id="zend.view.helpers.initial.placeholder.usage">
  13. <title>Grundsätzliche Verwendung von Platzhaltern</title>
  14. <para>
  15. Die grundsätzliche Verwendung von Platzhaltern ist die persistenz von View Daten. Jeder
  16. Aufruf des <code>Placeholder</code> Helfers erwartet einen Platzhalter Namen; der Helfer
  17. gibt dann ein Platzhalter Container Objekt zurück das entweder manipuliert oder einfach
  18. ausgegeben werden kann.
  19. </para>
  20. <programlisting language="php"><![CDATA[
  21. <?php $this->placeholder('foo')->set("Ein Text für später") ?>
  22. <?php
  23. echo $this->placeholder('foo');
  24. // Ausgabe "Ein Text für später"
  25. ?>
  26. ]]></programlisting>
  27. </example>
  28. <example id="zend.view.helpers.initial.placeholder.aggregation">
  29. <title>Platzhalter verwenden um Inhalt zu vereinigen</title>
  30. <para>
  31. Inhalt über Platzhalter zu vereinigen kann zeitweise auch sehr nützlich sein. Zum
  32. Beispiel kann ein View Skript ein variables Array besitzen von dem Nachrichten empfangen
  33. werden sollen um diese später darzustellen; ein späteres View Skript kann diese dann
  34. eruieren wie diese dargestellt werden sollen.
  35. </para>
  36. <para>
  37. Der <code>Placeholder</code> View Helfer verwendet Container die
  38. <code>ArrayObject</code> erweitern, und ein reichhaltiges Set von Features für die
  39. Manipulation von Arrays bieten. Zusätzlich bietet es eine Anzahl von Methoden für die
  40. Formatierung des Inhalts der im Container gespeichert ist:
  41. </para>
  42. <itemizedlist>
  43. <listitem>
  44. <para>
  45. <code>setPrefix($prefix)</code> setzt Text der dem Inhalt vorgesetzt wird.
  46. <code>getPrefix()</code> kann verwendet werden um jederzeit festzustellen wie
  47. die aktuellen Einstellungen sind.
  48. </para>
  49. </listitem>
  50. <listitem>
  51. <para>
  52. <code>setPostfix($prefix)</code> setzt Text der dem Inhalt angehängt wird.
  53. <code>getPostfix()</code> kann verwendet werden um jederzeit festzustellen wie
  54. die aktuellen Einstellungen sind.
  55. </para>
  56. </listitem>
  57. <listitem>
  58. <para>
  59. <code>setSeparator($prefix)</code> setzt Text mit dem zusammengefügte Inhalte
  60. seperiert werden. <code>getSeparator()</code> kann verwendet werden um jederzeit
  61. festzustellen wie die aktuellen Einstellungen sind.
  62. </para>
  63. </listitem>
  64. <listitem>
  65. <para>
  66. <code>setIndent($prefix)</code> kann verwendet werden um einen Markierungswert
  67. für den Inhalt zu setzen. Wenn ein Integer übergeben wird, wird diese Anzahl an
  68. Leerzeichen verwendet; wenn ein String übergeben wird, wird dieser String
  69. verwendet. <code>getIndent()</code> kann verwendet werden um jederzeit
  70. festzustellen wie die aktuellen Einstellungen sind.
  71. </para>
  72. </listitem>
  73. </itemizedlist>
  74. <programlisting language="php"><![CDATA[
  75. <!-- Erstes View Skript -->
  76. <?php $this->placeholder('foo')->exchangeArray($this->data) ?>
  77. ]]></programlisting>
  78. <programlisting language="php"><![CDATA[
  79. <!-- Späteres View Skript -->
  80. <?php
  81. $this->placeholder('foo')->setPrefix("<ul>\n <li>")
  82. ->setSeparator("</li><li>\n")
  83. ->setIndent(4)
  84. ->setPostfix("</li></ul>\n");
  85. ?>
  86. <?php
  87. echo $this->placeholder('foo');
  88. // Ausgabe als unsortierte Liste mit schöner Einrückung
  89. ?>
  90. ]]></programlisting>
  91. <para>
  92. Weil die <code>Placeholder</code> Container Objekte <code>ArrayObject</code> erweitern,
  93. können Inhalte einem speziellen Schlüssel im Container sehr einfach zugeordnet werden,
  94. statt diese einfach an den Container anzufügen. Auf Schlüssel kann entweder als Objekt
  95. Eigenschaften oder als Array Schlüssel zugegriffen werden.
  96. </para>
  97. <programlisting language="php"><![CDATA[
  98. <?php $this->placeholder('foo')->bar = $this->data ?>
  99. <?php echo $this->placeholder('foo')->bar ?>
  100. <?php
  101. $foo = $this->placeholder('foo');
  102. echo $foo['bar'];
  103. ?>
  104. ]]></programlisting>
  105. </example>
  106. <example id="zend.view.helpers.initial.placeholder.capture">
  107. <title>Verwenden von Platzhaltern um Inhalt zu erfassen</title>
  108. <para>
  109. Gelegentlich will man Inhalte für einen Platzhalter in einem View Skript haben die
  110. einfachst als Vorlage zu verwenden sind; der <code>Placeholder</code> View Helfer
  111. erlaubt es willkürliche Inhalte zu erfassen um diese später durch Verwendung der
  112. folgenden API darstellen zu können.
  113. </para>
  114. <itemizedlist>
  115. <listitem>
  116. <para>
  117. <code>captureStart($type, $key)</code> beginnt die Erfassung der Inhalte.
  118. </para>
  119. <para>
  120. <code>$type</code> sollte eine der <code>Placeholder</code> Konstanten
  121. <code>APPEND</code> oder <code>SET</code> sein. <code>APPEND</code> fügt
  122. erfasste Inhalte der Liste der aktuellen Inhalte im Placeholder an;
  123. <code>SET</code> verwendet erfasste Inhalte als einzigen Wert für den
  124. Platzhalter (überschreibt potentiell alle vorherigen Inhalte). Standardmäßig ist
  125. <code>$type</code> <code>APPEND</code>.
  126. </para>
  127. <para>
  128. <code>$key</code> kann verwendet werden um einen speziellen Schlüssel im
  129. Placeholder Container zu spezifizieren an dem der Inhalt erfasst werden soll.
  130. </para>
  131. <para>
  132. <code>captureStart()</code> sperrt die Erfassung bis <code>captureEnd()</code>
  133. aufgerufen wurde; Erfassungen können nicht mit dem selben Placeholder Container
  134. verschachtelt werden. Das führt zu einer Ausnahme.
  135. </para>
  136. </listitem>
  137. <listitem>
  138. <para>
  139. <code>captureEnd()</code> stoppt die Erfassung von Inhalten, und platziert Ihn
  140. im Container Objekt anhängig davon wie <code>captureStart()</code> aufgerufen
  141. wurde.
  142. </para>
  143. </listitem>
  144. </itemizedlist>
  145. <programlisting language="php"><![CDATA[
  146. <!-- Standarderfassung: anhängen -->
  147. <?php $this->placeholder('foo')->captureStart();
  148. foreach ($this->data as $datum): ?>
  149. <div class="foo">
  150. <h2><?php echo $datum->title ?></h2>
  151. <p><?php echo $datum->content ?></p>
  152. </div>
  153. <?php endforeach; ?>
  154. <?php $this->placeholder('foo')->captureEnd() ?>
  155. <?php echo $this->placeholder('foo') ?>
  156. ]]></programlisting>
  157. <programlisting language="php"><![CDATA[
  158. <!-- Erfassung zum Schlüssel -->
  159. <?php $this->placeholder('foo')->captureStart('SET', 'data');
  160. foreach ($this->data as $datum): ?>
  161. <div class="foo">
  162. <h2><?php echo $datum->title ?></h2>
  163. <p><?php echo $datum->content ?></p>
  164. </div>
  165. <?php endforeach; ?>
  166. <?php $this->placeholder('foo')->captureEnd() ?>
  167. <?php echo $this->placeholder('foo')->data ?>
  168. ]]></programlisting>
  169. </example>
  170. <sect4 id="zend.view.helpers.initial.placeholder.implementations">
  171. <title>Konkrete Platzhalter Implementationen</title>
  172. <para>
  173. Zend Framework kommt mit einer Anzahl an "konkreten" Platzhalter Implementationen. Diese
  174. sind für üblich verwendete Platzhalter: Doctype, Seitentitel, und verschiedene
  175. &lt;head&gt; Elemente. In allen Fällen gibt der Aufruf des Platzhalters ohne Argumente
  176. das Element selbst zurück.
  177. </para>
  178. <para>
  179. Die Dokumentation für jedes Element wird separat behandelt, wie anbei beschrieben:
  180. </para>
  181. <itemizedlist>
  182. <listitem><para>
  183. <link linkend="zend.view.helpers.initial.doctype">Doctype</link>
  184. </para></listitem>
  185. <listitem><para>
  186. <link linkend="zend.view.helpers.initial.headlink">HeadLink</link>
  187. </para></listitem>
  188. <listitem><para>
  189. <link linkend="zend.view.helpers.initial.headmeta">HeadMeta</link>
  190. </para></listitem>
  191. <listitem><para>
  192. <link linkend="zend.view.helpers.initial.headscript">HeadScript</link>
  193. </para></listitem>
  194. <listitem><para>
  195. <link linkend="zend.view.helpers.initial.headstyle">HeadStyle</link>
  196. </para></listitem>
  197. <listitem><para>
  198. <link linkend="zend.view.helpers.initial.headtitle">HeadTitle</link>
  199. </para></listitem>
  200. <listitem><para>
  201. <link linkend="zend.view.helpers.initial.inlinescript">InlineScript</link>
  202. </para></listitem>
  203. </itemizedlist>
  204. </sect4>
  205. </sect3>
  206. <!--
  207. vim:se ts=4 sw=4 et:
  208. -->