2
0

Zend_View-Helpers-Partial.xml 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17134 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.view.helpers.initial.partial">
  5. <title>Partielle Helfer</title>
  6. <para>
  7. Der <code>Partial</code> (Partielle) View Helfer wird verwendet um ein spezielles Template
  8. innerhalb seines eigenen variablen Bereichs zu rendern. Primär wird er für wiederverwendbare
  9. Templatefragmente verwendet bei denen man keine Vorsorge wegen variablen Namenskonflikten
  10. aufpassen muß. Zusätzlich erlauben Sie es Teile von View Skripten von speziellen Modulen zu
  11. spezifizieren.
  12. </para>
  13. <para>
  14. Ein Geschwisterteil zum <code>Partial</code> ist der <code>PartialLoop</code> View Helfer
  15. der es erlaubt Daten zu übergeben die durchlaufen werden können, und einen Abschnitt für
  16. jedes Teil auszugeben.
  17. </para>
  18. <note>
  19. <title>PartialLoop Zähler</title>
  20. <para>
  21. Der <code>PartialLoop</code> View Helfer fügt der View eine Variable hinzu die
  22. <code>partialCounter</code> heißt und welche die aktuelle Position des Arrays zum View
  23. Skript übergibt. Das bietet einen einfachen Weg um alternative Farbgebungen zum Bespiel
  24. bei Tabellenzeilen zu haben.
  25. </para>
  26. </note>
  27. <example id="zend.view.helpers.initial.partial.usage">
  28. <title>Grundsätzliche Verwendung von Partials</title>
  29. <para>
  30. Die grundsätzliche Verwendung von Partials ist die Ausgabe von Templatefragmenten im
  31. eigenen Viewbereich. Es wird das folgende teilweise Skript angenommen:
  32. </para>
  33. <programlisting language="php"><![CDATA[
  34. <?php // partial.phtml ?>
  35. <ul>
  36. <li>Von: <?php echo $this->escape($this->from) ?></li>
  37. <li>Subjekt: <?php echo $this->escape($this->subject) ?></li>
  38. </ul>
  39. ]]></programlisting>
  40. <para>
  41. Dieses würde dann vom View Skript aufgerufen indem das folgende verwendet wird:
  42. </para>
  43. <programlisting language="php"><![CDATA[
  44. <?php echo $this->partial('partial.phtml', array(
  45. 'from' => 'Team Framework',
  46. 'subject' => 'Teil der View')); ?>
  47. ]]></programlisting>
  48. <para>
  49. Was dann das folgende ausgibt:
  50. </para>
  51. <programlisting language="html"><![CDATA[
  52. <ul>
  53. <li>From: Team Framework</li>
  54. <li>Subject: Teil der View</li>
  55. </ul>
  56. ]]></programlisting>
  57. </example>
  58. <note>
  59. <title>Was ist ein Modell?</title>
  60. <para>
  61. Ein Modell das mit dem <code>Partial</code> View Helfer verwendet wird kann eines der
  62. folgenden sein:
  63. </para>
  64. <itemizedlist>
  65. <listitem>
  66. <para>
  67. <emphasis>Array</emphasis>. Wenn ein Array übergeben wird, sollte es assoziativ
  68. sein, und seine Schlüssel/Werte Paare werden der View mit dem Schlüssel als View
  69. Variable zugeordnet.
  70. </para>
  71. </listitem>
  72. <listitem>
  73. <para>
  74. <emphasis>Objekt das die toArray() Methode implementiert</emphasis>. Wenn ein
  75. Objekt übergeben wird das eine <methodname>toArray()</methodname> Methode
  76. besitzt, wird das Ergebnis von <methodname>toArray()</methodname> dem View
  77. Objekt als View Variablen zugeordnet.
  78. </para>
  79. </listitem>
  80. <listitem>
  81. <para>
  82. <emphasis>Standard Objekt</emphasis>. Jedes andere Objekt wird die Ergebnisse
  83. von <methodname>object_get_vars()</methodname> (essentiell alle öffentlichen
  84. Eigenschaften des Objektes) dem View Objekt zuordnen.
  85. </para>
  86. </listitem>
  87. </itemizedlist>
  88. <para>
  89. Wenn das eigene Modell ein Objekt ist, kann es gewünscht sein, es <emphasis>als
  90. Objekt</emphasis> an das Partielle Skript zu übergeben, statt es in ein Array von
  91. Variablen zu serialisieren. Das kann durch das Setzen der 'objectKey' Eigenschaft des
  92. betreffenden Helfers getan werden:
  93. </para>
  94. <programlisting language="php"><![CDATA[
  95. // Dem Partiellen mitteilen das ein Objekt als 'model' Variable übergeben wird
  96. $view->partial()->setObjectKey('model');
  97. // Dem Partiellen mitteilen das ein Objekt von partialLoop als 'model'
  98. // Variable im letzten Partiellen View Skript übergeben wird
  99. $view->partialLoop()->setObjectKey('model');
  100. ]]></programlisting>
  101. <para>
  102. Diese Technik ist speziell dann sinnvoll wenn
  103. <classname>Zend_Db_Table_Rowset</classname>s an <methodname>partialLoop()</methodname>
  104. übergeben werden, da man dann kompletten Zugriff auf die Zeilenobjekte im View Skript
  105. hat, was es einem erlaubt Ihre Methoden auszurufen (wie das empfangen von Werten bei
  106. Eltern- oder abhängigen Zeilen).
  107. </para>
  108. </note>
  109. <example id="zend.view.helpers.initial.partial.partialloop">
  110. <title>Verwendung von PartialLoop um iterierbare Modelle darzustellen</title>
  111. <para>
  112. Typischerweise, wird man Partials in einer Schleife verwenden um das selbe
  113. Inhaltsfragment, viele Male, darzustellen; auf diesem Weg können große Blöcke von
  114. wiederholenden Inhalten oder komplexe Anzeigelogik auf einen einzelnen Platz gegeben
  115. werden. Trotzdem hat das einen Geschwindigkeitsnachteil, da der partielle Helfer einmal
  116. für jede Iteration aufgerufen werden
  117. muß.
  118. </para>
  119. <para>
  120. Der <code>PartialLoop</code> View Helfer hilft bei der Lösung dieses Problems. Er
  121. erlaubt es einen wiederholenden Teil (Array oder Objekt das einen <code>Iterator</code>
  122. implementiert) als Modell zu übergeben. Er iteriert dann darüber, und übergibt dessen
  123. Teile dem Partial Skript als Modell. Teil in diesem Iterator kann jedes Modell sein das
  124. der <code>Partial</code> View Helfer erlaubt.
  125. </para>
  126. <para>
  127. Es wird das folgende teilweise View Skript angenommen:
  128. </para>
  129. <programlisting language="php"><![CDATA[
  130. <?php // partialLoop.phtml ?>
  131. <dt><?php echo $this->key ?></dt>
  132. <dd><?php echo $this->value ?></dd>
  133. ]]></programlisting>
  134. <para>
  135. Und das folgende "Modell":
  136. </para>
  137. <programlisting language="php"><![CDATA[
  138. $model = array(
  139. array('key' => 'Säugetier', 'value' => 'Kamel'),
  140. array('key' => 'Vogel', 'value' => 'Pinguin'),
  141. array('key' => 'Reptil', 'value' => 'Viper'),
  142. array('key' => 'Fisch', 'value' => 'Flunder'),
  143. );
  144. ]]></programlisting>
  145. <para>
  146. Im View Skript wird dann der <code>PartialLoop</code> Helfer aufgerufen:
  147. </para>
  148. <programlisting language="php"><![CDATA[
  149. <dl>
  150. <?php echo $this->partialLoop('partialLoop.phtml', $model) ?>
  151. </dl>
  152. ]]></programlisting>
  153. <programlisting language="html"><![CDATA[
  154. <dl>
  155. <dt>Säugetier</dt>
  156. <dd>Kamel</dd>
  157. <dt>Vogel</dt>
  158. <dd>Pinguin</dd>
  159. <dt>Reptil</dt>
  160. <dd>Viper</dd>
  161. <dt>Fisch</dt>
  162. <dd>Flunder</dd>
  163. </dl>
  164. ]]></programlisting>
  165. </example>
  166. <example id="zend.view.helpers.initial.partial.modules">
  167. <title>Partials in anderen Modulen darstellen</title>
  168. <para>
  169. Zeitweise existiert ein Parial in einem anderen Modul. Wenn der Name des Moduls bekannt
  170. ist, kann dieses als zweites Argument entweder <methodname>partial()</methodname> oder
  171. <methodname>partialLoop()</methodname> übergeben werden, indem das
  172. <varname>$model</varname> Argument an dritte Stelle verschoben wird.
  173. </para>
  174. <para>
  175. Wenn zum Beispiel, eine Teilseite existiert im 'list' Modul existiert die verwendet
  176. werden soll, kann diese wie folgt genommen werden:
  177. </para>
  178. <programlisting language="php"><![CDATA[
  179. <?php echo $this->partial('pager.phtml', 'list', $pagerData) ?>
  180. ]]></programlisting>
  181. <para>
  182. Auf diesem Weg, können Teile wiederverwendet werden die speziell für andere Module
  183. erstellt wurden. Deshalb ist es besser, wiederverwendbare Teile in einen Pfad für
  184. geteilt View Skripte zu geben.
  185. </para>
  186. </example>
  187. </sect3>
  188. <!--
  189. vim:se ts=4 sw=4 et:
  190. -->