| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15617 -->
- <!-- Reviewed: no -->
- <sect3 id="zend.view.helpers.initial.placeholder">
- <title>Platzhalter (PlaceHolder) Helfer</title>
- <para>
- Der <code>Placeholder</code> View Helfer wird verwendet um Inhalte zwischen View Skripten
- und View Instanzen persistent zu machen. Er bietet auch einige nützliche Features wie
- Inhalte zu vereinigen, Inhalte von View Skripten zu erfassen und Vor- sowie Nach-Texte zu
- Inhalten hinzuzufügen (und eigene Separatoren für vereinigte Inhalte).
- </para>
- <example id="zend.view.helpers.initial.placeholder.usage">
- <title>Grundsätzliche Verwendung von Platzhaltern</title>
- <para>
- Die grundsätzliche Verwendung von Platzhaltern ist die persistenz von View Daten. Jeder
- Aufruf des <code>Placeholder</code> Helfers erwartet einen Platzhalter Namen; der Helfer
- gibt dann ein Platzhalter Container Objekt zurück das entweder manipuliert oder einfach
- ausgegeben werden kann.
- </para>
- <programlisting language="php"><![CDATA[
- <?php $this->placeholder('foo')->set("Ein Text für später") ?>
- <?php
- echo $this->placeholder('foo');
- // Ausgabe "Ein Text für später"
- ?>
- ]]></programlisting>
- </example>
- <example id="zend.view.helpers.initial.placeholder.aggregation">
- <title>Platzhalter verwenden um Inhalt zu vereinigen</title>
- <para>
- Inhalt über Platzhalter zu vereinigen kann zeitweise auch sehr nützlich sein. Zum
- Beispiel kann ein View Skript ein variables Array besitzen von dem Nachrichten empfangen
- werden sollen um diese später darzustellen; ein späteres View Skript kann diese dann
- eruieren wie diese dargestellt werden sollen.
- </para>
- <para>
- Der <code>Placeholder</code> View Helfer verwendet Container die
- <code>ArrayObject</code> erweitern, und ein reichhaltiges Set von Features für die
- Manipulation von Arrays bieten. Zusätzlich bietet es eine Anzahl von Methoden für die
- Formatierung des Inhalts der im Container gespeichert ist:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>setPrefix($prefix)</code> setzt Text der dem Inhalt vorgesetzt wird.
- <code>getPrefix()</code> kann verwendet werden um jederzeit festzustellen wie
- die aktuellen Einstellungen sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>setPostfix($prefix)</code> setzt Text der dem Inhalt angehängt wird.
- <code>getPostfix()</code> kann verwendet werden um jederzeit festzustellen wie
- die aktuellen Einstellungen sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>setSeparator($prefix)</code> setzt Text mit dem zusammengefügte Inhalte
- seperiert werden. <code>getSeparator()</code> kann verwendet werden um jederzeit
- festzustellen wie die aktuellen Einstellungen sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>setIndent($prefix)</code> kann verwendet werden um einen Markierungswert
- für den Inhalt zu setzen. Wenn ein Integer übergeben wird, wird diese Anzahl an
- Leerzeichen verwendet; wenn ein String übergeben wird, wird dieser String
- verwendet. <code>getIndent()</code> kann verwendet werden um jederzeit
- festzustellen wie die aktuellen Einstellungen sind.
- </para>
- </listitem>
- </itemizedlist>
- <programlisting language="php"><![CDATA[
- <!-- Erstes View Skript -->
- <?php $this->placeholder('foo')->exchangeArray($this->data) ?>
- ]]></programlisting>
- <programlisting language="php"><![CDATA[
- <!-- Späteres View Skript -->
- <?php
- $this->placeholder('foo')->setPrefix("<ul>\n <li>")
- ->setSeparator("</li><li>\n")
- ->setIndent(4)
- ->setPostfix("</li></ul>\n");
- ?>
- <?php
- echo $this->placeholder('foo');
- // Ausgabe als unsortierte Liste mit schöner Einrückung
- ?>
- ]]></programlisting>
- <para>
- Weil die <code>Placeholder</code> Container Objekte <code>ArrayObject</code> erweitern,
- können Inhalte einem speziellen Schlüssel im Container sehr einfach zugeordnet werden,
- statt diese einfach an den Container anzufügen. Auf Schlüssel kann entweder als Objekt
- Eigenschaften oder als Array Schlüssel zugegriffen werden.
- </para>
- <programlisting language="php"><![CDATA[
- <?php $this->placeholder('foo')->bar = $this->data ?>
- <?php echo $this->placeholder('foo')->bar ?>
- <?php
- $foo = $this->placeholder('foo');
- echo $foo['bar'];
- ?>
- ]]></programlisting>
- </example>
- <example id="zend.view.helpers.initial.placeholder.capture">
- <title>Verwenden von Platzhaltern um Inhalt zu erfassen</title>
- <para>
- Gelegentlich will man Inhalte für einen Platzhalter in einem View Skript haben die
- einfachst als Vorlage zu verwenden sind; der <code>Placeholder</code> View Helfer
- erlaubt es willkürliche Inhalte zu erfassen um diese später durch Verwendung der
- folgenden API darstellen zu können.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>captureStart($type, $key)</code> beginnt die Erfassung der Inhalte.
- </para>
- <para>
- <code>$type</code> sollte eine der <code>Placeholder</code> Konstanten
- <code>APPEND</code> oder <code>SET</code> sein. <code>APPEND</code> fügt
- erfasste Inhalte der Liste der aktuellen Inhalte im Placeholder an;
- <code>SET</code> verwendet erfasste Inhalte als einzigen Wert für den
- Platzhalter (überschreibt potentiell alle vorherigen Inhalte). Standardmäßig ist
- <code>$type</code> <code>APPEND</code>.
- </para>
- <para>
- <code>$key</code> kann verwendet werden um einen speziellen Schlüssel im
- Placeholder Container zu spezifizieren an dem der Inhalt erfasst werden soll.
- </para>
- <para>
- <code>captureStart()</code> sperrt die Erfassung bis <code>captureEnd()</code>
- aufgerufen wurde; Erfassungen können nicht mit dem selben Placeholder Container
- verschachtelt werden. Das führt zu einer Ausnahme.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>captureEnd()</code> stoppt die Erfassung von Inhalten, und platziert Ihn
- im Container Objekt anhängig davon wie <code>captureStart()</code> aufgerufen
- wurde.
- </para>
- </listitem>
- </itemizedlist>
- <programlisting language="php"><![CDATA[
- <!-- Standarderfassung: anhängen -->
- <?php $this->placeholder('foo')->captureStart();
- foreach ($this->data as $datum): ?>
- <div class="foo">
- <h2><?php echo $datum->title ?></h2>
- <p><?php echo $datum->content ?></p>
- </div>
- <?php endforeach; ?>
- <?php $this->placeholder('foo')->captureEnd() ?>
- <?php echo $this->placeholder('foo') ?>
- ]]></programlisting>
- <programlisting language="php"><![CDATA[
- <!-- Erfassung zum Schlüssel -->
- <?php $this->placeholder('foo')->captureStart('SET', 'data');
- foreach ($this->data as $datum): ?>
- <div class="foo">
- <h2><?php echo $datum->title ?></h2>
- <p><?php echo $datum->content ?></p>
- </div>
- <?php endforeach; ?>
- <?php $this->placeholder('foo')->captureEnd() ?>
- <?php echo $this->placeholder('foo')->data ?>
- ]]></programlisting>
- </example>
- <sect4 id="zend.view.helpers.initial.placeholder.implementations">
- <title>Konkrete Platzhalter Implementationen</title>
- <para>
- Zend Framework kommt mit einer Anzahl an "konkreten" Platzhalter Implementationen. Diese
- sind für üblich verwendete Platzhalter: Doctype, Seitentitel, und verschiedene
- <head> Elemente. In allen Fällen gibt der Aufruf des Platzhalters ohne Argumente
- das Element selbst zurück.
- </para>
- <para>
- Die Dokumentation für jedes Element wird separat behandelt, wie anbei beschrieben:
- </para>
- <itemizedlist>
- <listitem><para>
- <link linkend="zend.view.helpers.initial.doctype">Doctype</link>
- </para></listitem>
- <listitem><para>
- <link linkend="zend.view.helpers.initial.headlink">HeadLink</link>
- </para></listitem>
- <listitem><para>
- <link linkend="zend.view.helpers.initial.headmeta">HeadMeta</link>
- </para></listitem>
- <listitem><para>
- <link linkend="zend.view.helpers.initial.headscript">HeadScript</link>
- </para></listitem>
- <listitem><para>
- <link linkend="zend.view.helpers.initial.headstyle">HeadStyle</link>
- </para></listitem>
- <listitem><para>
- <link linkend="zend.view.helpers.initial.headtitle">HeadTitle</link>
- </para></listitem>
- <listitem><para>
- <link linkend="zend.view.helpers.initial.inlinescript">InlineScript</link>
- </para></listitem>
- </itemizedlist>
- </sect4>
- </sect3>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|