Zend_View-Helpers-Placeholder.xml 10 KB

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