| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15142 -->
- <!-- Reviewed: no -->
- <sect3 id="zend.controller.actionhelpers.json">
- <title>JSON</title>
- <para>
- JSON Antworten sind die Antworten der Wahl wenn mit AJAX Anfragen gearbeitet wird die
- Dataset Antworten erwarten; JSON kann sofort auf Seite des Clienten geparst werden, was zu
- schneller Ausführung führt.
- </para>
- <para>
- Der JSON Action Helfer macht verschiedene Dinge:
- </para>
- <itemizedlist>
- <listitem><para>
- Layouts auschalten wenn sie aktuell aktiviert sind.
- </para></listitem>
- <listitem>
- <para>
- Optional ein Array von Optionen als zweites Argument an
- <code>Zend_Json::encode()</code> übergeben. Dieses Array von Optionen erlaubt es
- Layouts und Kodierungen einzuschalten indem <code>Zend_Json_Expr</code> verwendet
- wird.
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, array('enableJsonExprFinder' => true));
- ]]></programlisting>
- </listitem>
- <listitem><para>
- Den ViewRenderer ausschalten wenn er aktiviert ist.
- </para></listitem>
- <listitem><para>
- Den 'Content-Type' Antwort Header auf 'application/json' setzen.
- </para></listitem>
- <listitem><para>
- Standardmäßig, die Antwort sofort zurückgeben, ohne darauf zu warten das die Aktion
- die Ausführung beendet.
- </para></listitem>
- </itemizedlist>
- <para>
- Die Verwendung ist einfach: Entweder als Methode des Helfer Brokers aufrufen, oder eine der
- Methoden <code>encodeJson()</code> oder <code>sendJson()</code> aufrufen:
- </para>
- <programlisting role="php"><![CDATA[
- class FooController extends Zend_Controller_Action
- {
- public function barAction()
- {
- // einige Berechnungen durchführen...
- // Die JSON Antwort senden:
- $this->_helper->json($data);
- // oder...
- $this->_helper->json->sendJson($data);
- // oder das JSON empfangen:
- $json = $this->_helper->json->encodeJson($data);
- }
- }
- ]]></programlisting>
- <note>
- <title>Layouts behalten</title>
- <para>
- Wenn man ein separates Layout für JSON Antworten hat -- möglicherweise um die JSON
- Antworten in einer Art Kontext zu wrappen -- akzeptiert jede Methode im JSON Helfer
- ein zweites, optionales Argument: Ein Flag um Layouts zu aktivieren oder deaktivieren.
- Die Übergabe eines boolschen <code>true</code> Wertes hält Layouts aktiviert:
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, true);
- ]]></programlisting>
- <para>
- Optional kann ein Array als zweiter Parameter übergeben werden. Dieses Array kann eine
- Vielzahl von Optionen enthalten, inklusive der <code>keepLayouts</code> Option:
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, array('keepLayouts' => true);
- ]]></programlisting>
- </note>
- <note>
- <title>Kodierung einschalten durch Verwendung von Zend_Json_Expr</title>
- <para>
- <code>Zend_Json::encode()</code> erlaubt die Kodierung von nativen JSON Ausdrücken
- indem <code>Zend_Json_Expr Objekte verwendet</code> werden. Diese Option ist
- standardmäßig ausgeschaltet. Um diese Option einzuschalten muß ein boolscher
- <code>true</code> Wert an die <code>enableJsonExprFinder</code> Option übergeben
- werden:
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, array('enableJsonExprFinder' => true);
- ]]></programlisting>
- <para>
- Wenn man das durchführen will, <emphasis>muss</emphasis> man ein Array als zweite
- Option übergeben. Das erlaubt es auch andere Optionen, wie zum Beispiel die
- <code>keepLayouts</code> Option, zu kombinieren. Alle diese Optionen werden dann
- an <code>Zend_Json::encode()</code> übergeben.
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, array(
- 'enableJsonExprFinder' => true,
- 'keepLayouts' => true,
- ));
- ]]></programlisting>
- </note>
- </sect3>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|