File: Zend_Controller-ActionHelpers-Json.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (137 lines) | stat: -rw-r--r-- 4,880 bytes parent folder | download | duplicates (2)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect3 id="zend.controller.actionhelpers.json">
    <title>JSON</title>

    <para>
        <acronym>JSON</acronym> Antworten sind die Antworten der Wahl wenn mit
        <acronym>AJAX</acronym> Anfragen gearbeitet wird die Dataset Antworten erwarten;
        <acronym>JSON</acronym> kann sofort auf Seite des Clienten geparst werden, was zu
        schneller Ausführung führt.
    </para>

    <para>
        Der <acronym>JSON</acronym> 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
                <methodname>Zend_Json::encode()</methodname> übergeben. Dieses Array von Optionen
                erlaubt es Layouts und Kodierungen einzuschalten indem
                <classname>Zend_Json_Expr</classname> verwendet wird.
            </para>

            <programlisting language="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 '<filename>application/json</filename>'
                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 <methodname>encodeJson()</methodname> oder <methodname>sendJson()</methodname>
        aufrufen:
    </para>

    <programlisting language="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 <acronym>JSON</acronym> Antworten hat --
            möglicherweise um die <acronym>JSON</acronym> Antworten in einer Art Kontext zu wrappen
            -- akzeptiert jede Methode im <acronym>JSON</acronym> Helfer ein zweites, optionales
            Argument: Ein Flag um Layouts zu aktivieren oder deaktivieren. Die Übergabe eines
            boolschen <constant>TRUE</constant> Wertes hält Layouts aktiviert:
        </para>

        <programlisting language="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 <emphasis>keepLayouts</emphasis> Option:
        </para>

        <programlisting language="php"><![CDATA[
$this->_helper->json($data, array('keepLayouts' => true);
]]></programlisting>
    </note>

    <note>
        <title>Kodierung einschalten durch Verwendung von Zend_Json_Expr</title>

        <para>
            <methodname>Zend_Json::encode()</methodname> erlaubt die Kodierung von nativen
            <acronym>JSON</acronym> Ausdrücken indem <classname>Zend_Json_Expr</classname>
            Objekte verwendet werden. Diese Option ist standardmäßig ausgeschaltet. Um diese Option
            einzuschalten muß ein boolscher <constant>TRUE</constant> Wert an die
            <emphasis>enableJsonExprFinder</emphasis> Option übergeben werden:
        </para>

        <programlisting language="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
            <emphasis>keepLayouts</emphasis> Option, zu kombinieren. Alle diese Optionen werden
            dann an <methodname>Zend_Json::encode()</methodname> übergeben.
        </para>

        <programlisting language="php"><![CDATA[
$this->_helper->json($data, array(
    'enableJsonExprFinder' => true,
    'keepLayouts'          => true,
));
]]></programlisting>
    </note>
</sect3>