Zend_View-Helpers-Placeholder.xml 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 14978 -->
  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 und View
  8. Instanzen persistent zu machen. Er bietet auch einige nützliche Features wie Inhalte zu vereinigen,
  9. Inhalte von View Skripten zu erfassen und Vor- sowie Nach-Texte zu Inhalten hinzuzufügen (und eigene
  10. 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 Aufruf des
  16. <code>Placeholder</code> Helfers erwartet einen Platzhalter Namen; der Helfer gibt dann ein
  17. Platzhalter Container Objekt zurück das entweder manipuliert oder einfach ausgegeben werden kann.
  18. </para>
  19. <programlisting role="php"><![CDATA[
  20. <?php $this->placeholder('foo')->set("Ein Text für später") ?>
  21. <?php
  22. echo $this->placeholder('foo');
  23. // Ausgabe "Ein Text für später"
  24. ?>
  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 Beispiel kann ein
  32. View Skript ein variables Array besitzen von dem Nachrichten empfangen werden sollen um diese
  33. später darzustellen; ein späteres View Skript kann diese dann eruieren wie diese dargestellt werden
  34. sollen.
  35. </para>
  36. <para>
  37. Der <code>Placeholder</code> View Helfer verwendet Container die <code>ArrayObject</code> erweitern,
  38. und ein reichhaltiges Set von Features für die Manipulation von Arrays bieten. Zusätzlich bietet es
  39. eine Anzahl von Methoden für die Formatierung des Inhalts der im Container gespeichert ist:
  40. </para>
  41. <itemizedlist>
  42. <listitem>
  43. <para>
  44. <code>setPrefix($prefix)</code> setzt Text der dem Inhalt vorgesetzt wird.
  45. <code>getPrefix()</code> kann verwendet werden um jederzeit festzustellen wie die aktuellen
  46. Einstellungen sind.
  47. </para>
  48. </listitem>
  49. <listitem>
  50. <para>
  51. <code>setPostfix($prefix)</code> setzt Text der dem Inhalt angehängt wird.
  52. <code>getPostfix()</code> kann verwendet werden um jederzeit festzustellen wie die
  53. aktuellen Einstellungen sind.
  54. </para>
  55. </listitem>
  56. <listitem>
  57. <para>
  58. <code>setSeparator($prefix)</code> setzt Text mit dem zusammengefügte Inhalte seperiert
  59. werden. <code>getSeparator()</code> kann verwendet werden um jederzeit festzustellen wie die
  60. aktuellen Einstellungen sind.
  61. </para>
  62. </listitem>
  63. <listitem>
  64. <para>
  65. <code>setIndent($prefix)</code> kann verwendet werden um einen Markierungswert für
  66. den Inhalt zu setzen. Wenn ein Integer übergeben wird, wird diese Anzahl an Leerzeichen
  67. verwendet; wenn ein String übergeben wird, wird dieser String verwendet.
  68. <code>getIndent()</code> kann verwendet werden um jederzeit festzustellen wie die
  69. aktuellen Einstellungen sind.
  70. </para>
  71. </listitem>
  72. </itemizedlist>
  73. <programlisting role="php"><![CDATA[
  74. <!-- Erstes View Skript -->
  75. <?php $this->placeholder('foo')->exchangeArray($this->data) ?>
  76. ]]>
  77. </programlisting>
  78. <programlisting role="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. ]]>
  91. </programlisting>
  92. <para>
  93. Weil die <code>Placeholder</code> Container Objekte <code>ArrayObject</code> erweitern, können
  94. Inhalte einem speziellen Schlüssel im Container sehr einfach zugeordnet werden, statt diese einfach
  95. an den Container anzufügen. Auf Schlüssel kann entweder als Objekt Eigenschaften oder als Array
  96. Schlüssel zugegriffen werden.
  97. </para>
  98. <programlisting role="php"><![CDATA[
  99. <?php $this->placeholder('foo')->bar = $this->data ?>
  100. <?php echo $this->placeholder('foo')->bar ?>
  101. <?php
  102. $foo = $this->placeholder('foo');
  103. echo $foo['bar'];
  104. ?>
  105. ]]>
  106. </programlisting>
  107. </example>
  108. <example id="zend.view.helpers.initial.placeholder.capture">
  109. <title>Verwenden von Platzhaltern um Inhalt zu erfassen</title>
  110. <para>
  111. Gelegentlich will man Inhalte für einen Platzhalter in einem View Skript haben die einfachst als
  112. Vorlage zu verwenden sind; der <code>Placeholder</code> View Helfer erlaubt es willkürliche
  113. Inhalte zu erfassen um diese später durch Verwendung der folgenden API darstellen zu können.
  114. </para>
  115. <itemizedlist>
  116. <listitem>
  117. <para>
  118. <code>captureStart($type, $key)</code> beginnt die Erfassung der Inhalte.
  119. </para>
  120. <para>
  121. <code>$type</code> sollte eine der <code>Placeholder</code> Konstanten <code>APPEND</code>
  122. oder <code>SET</code> sein. <code>APPEND</code> fügt erfasste Inhalte der Liste der aktuellen
  123. Inhalte im Placeholder an; <code>SET</code> verwendet erfasste Inhalte als einzigen Wert
  124. für den 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 Placeholder Container
  129. zu spezifizieren an dem der Inhalt erfasst werden soll.
  130. </para>
  131. <para>
  132. <code>captureStart()</code> sperrt die Erfassung bis <code>captureEnd()</code> aufgerufen
  133. wurde; Erfassungen können nicht mit dem selben Placeholder Container verschachtelt werden.
  134. 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 im
  140. Container Objekt anhängig davon wie <code>captureStart()</code> aufgerufen wurde.
  141. </para>
  142. </listitem>
  143. </itemizedlist>
  144. <programlisting role="php"><![CDATA[
  145. <!-- Standarderfassung: anhängen -->
  146. <?php $this->placeholder('foo')->captureStart();
  147. foreach ($this->data as $datum): ?>
  148. <div class="foo">
  149. <h2><?php echo $datum->title ?></h2>
  150. <p><?php echo $datum->content ?></p>
  151. </div>
  152. <?php endforeach; ?>
  153. <?php $this->placeholder('foo')->captureEnd() ?>
  154. <?php echo $this->placeholder('foo') ?>
  155. ]]>
  156. </programlisting>
  157. <programlisting role="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. ]]>
  169. </programlisting>
  170. </example>
  171. <sect4 id="zend.view.helpers.initial.placeholder.implementations">
  172. <title>Konkrete Platzhalter Implementationen</title>
  173. <para>
  174. Zend Framework kommt mit einer Anzahl an "konkreten" Platzhalter Implementationen. Diese sind für
  175. üblich verwendete Platzhalter: Doctype, Seitentitel, und verschiedene &lt;head&gt; Elemente. In allen
  176. Fällen gibt der Aufruf des Platzhalters ohne Argumente 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. -->