Zend_View-Helpers-Partial.xml 8.1 KB

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