| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect3 id="zend.view.helpers.initial.placeholder">
- <title>Platzhalter (PlaceHolder) Helfer</title>
- <para>
- Der <classname>Placeholder</classname> 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 <classname>Placeholder</classname> 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 <classname>Placeholder</classname> View Helfer verwendet Container die
- <classname>ArrayObject</classname> 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>
- <methodname>setPrefix($prefix)</methodname> setzt Text der dem Inhalt vorgesetzt
- wird. <methodname>getPrefix()</methodname> kann verwendet werden um jederzeit
- festzustellen wie die aktuellen Einstellungen sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>setPostfix($prefix)</methodname> setzt Text der dem Inhalt angehängt
- wird. <methodname>getPostfix()</methodname> kann verwendet werden um jederzeit
- festzustellen wie die aktuellen Einstellungen sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>setSeparator($prefix)</methodname> setzt Text mit dem
- zusammengefügte Inhalte seperiert werden.
- <methodname>getSeparator()</methodname> kann verwendet werden um jederzeit
- festzustellen wie die aktuellen Einstellungen sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>setIndent($prefix)</methodname> 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. <methodname>getIndent()</methodname> 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 <classname>Placeholder</classname> Container Objekte
- <classname>ArrayObject</classname> 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 <classname>Placeholder</classname> View
- Helfer erlaubt es willkürliche Inhalte zu erfassen um diese später durch Verwendung der
- folgenden <acronym>API</acronym> darstellen zu können.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>captureStart($type, $key)</methodname> beginnt die Erfassung der
- Inhalte.
- </para>
- <para>
- <varname>$type</varname> sollte eine der <classname>Placeholder</classname>
- Konstanten <constant>APPEND</constant> oder <constant>SET</constant> sein.
- <constant>APPEND</constant> fügt erfasste Inhalte der Liste der aktuellen
- Inhalte im Placeholder an; <constant>SET</constant> verwendet erfasste Inhalte
- als einzigen Wert für den Platzhalter (überschreibt potentiell alle vorherigen
- Inhalte). Standardmäßig ist <varname>$type</varname>
- <constant>APPEND</constant>.
- </para>
- <para>
- <varname>$key</varname> kann verwendet werden um einen speziellen Schlüssel im
- Placeholder Container zu spezifizieren an dem der Inhalt erfasst werden soll.
- </para>
- <para>
- <methodname>captureStart()</methodname> sperrt die Erfassung bis
- <methodname>captureEnd()</methodname> aufgerufen wurde; Erfassungen können nicht
- mit dem selben Placeholder Container verschachtelt werden. Das führt zu einer
- Ausnahme.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>captureEnd()</methodname> stoppt die Erfassung von Inhalten, und
- platziert Ihn im Container Objekt anhängig davon wie
- <methodname>captureStart()</methodname> 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:
- -->
|