1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect3 id="zend.view.helpers.initial.json">
<title>JSON Helfer</title>
<para>
Wenn Views erstellt werden die <acronym>JSON</acronym> zurückgeben ist es wichtig auch den
entsprechenden Antwort-Header zu setzen. Der <acronym>JSON</acronym> View Helfer macht exakt
das. Zusätzlich schaltet er, standardmäßig, Layouts aus (wenn diese aktuell eingeschaltet
sind), weil Layouts generell nicht mit <acronym>JSON</acronym> Antworten verwendet werden.
</para>
<para>
Der <acronym>JSON</acronym> Helfer setzt die folgenden Header:
</para>
<programlisting language="text"><![CDATA[
Content-Type: application/json
]]></programlisting>
<para>
Die meisten <acronym>AJAX</acronym> Bibliotheken sehen nach diesem Header wenn die Antworten
geparst werden um festzustellen wie der Inhalt handzuhaben ist.
</para>
<para>
Die Verwendung des <acronym>JSON</acronym> Helfers ist sehr geradlienig:
</para>
<programlisting language="php"><![CDATA[
<?php echo $this->json($this->data) ?>
]]></programlisting>
<note>
<title>Layouts behalten und Encoding einschalten durch Verwendung von Zend_Json_Expr</title>
<para>
Jede Methode im <acronym>JSON</acronym> Helfer akzwptiert ein zweites, optionales,
Argument. Dieses zweite Argument kan ein boolsches Flag sein um Layouts ein- oder
auszuschalten, oder ein Array von Optionen die an
<methodname>Zend_Json::encode()</methodname> übergeben und intern verwendet werden um
Daten zu kodieren.
</para>
<para>
Um Layouts zu behalten muß der zweite Parameter ein boolsches <constant>TRUE</constant>
sein. Wenn der zweite Parameter ein Array ist, können Layouts behalten werden indem ein
<property>keepLayouts</property> Schlüssel mit dem boolschen Wert
<constant>TRUE</constant> eingefügt wird.
</para>
<programlisting language="php"><![CDATA[
// Ein boolsches true als zweites Argument aktiviert Layouts:
echo $this->json($this->data, true);
// Oder ein boolsches true als "keepLayouts" Schlüssel:
echo $this->json($this->data, array('keepLayouts' => true));
]]></programlisting>
<para>
<classname>Zend_Json::encode</classname> erlaubt es native <acronym>JSON</acronym>
Ausdrücke zu kodieren indem <classname>Zend_Json_Expr</classname> Objekte verwendet
werden. Diese Option ist standardmäßig deaktiviert. Um diese Option zu aktivieren, muß
ein boolsches <constant>TRUE</constant> an den <property>enableJsonExprFinder</property>
Schlüssel des Options Arrays übergeben werden:
</para>
<programlisting language="php"><![CDATA[
<?php echo $this->json($this->data, array(
'enableJsonExprFinder' => true,
'keepLayouts' => true,
)) ?>
]]></programlisting>
</note>
</sect3>
<!--
vim:se ts=4 sw=4 et:
-->
|