[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / module_specs / Zend_Controller-ActionHelpers-Json.xml
blob717f21a3e43a3c451cef6b05c18d005bb7e56481
1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- EN-Revision: 20765 -->
3 <!-- Reviewed: no -->
4 <sect3 id="zend.controller.actionhelpers.json">
5     <title>JSON</title>
7     <para>
8         Les réponses <acronym>JSON</acronym> sont les réponses de choix dans une
9         architecture de type <acronym>AJAX</acronym> qui attend des données structurées.
10         <acronym>JSON</acronym> peut être immédiatement interprété du coté du client, ce qui
11         rend la tâche plus simple et plus rapide.
12     </para>
14     <para>
15         L'aide d'action <acronym>JSON</acronym> effectue plusieurs
16         traitements&#160;:
17     </para>
19     <itemizedlist>
20         <listitem>
21             <para>Désactive les layouts si elles sont activées.</para>
22         </listitem>
24         <listitem>
25             <para>
26                 Optionnellement, un tableau d'options en second argument de
27                 <methodname>Zend_Json::encode()</methodname>. Ce tableau d'options permet
28                 l'activation des layouts et l'encodage en utilisant
29                 <classname>Zend_Json_Expr</classname>.
30             </para>
32             <programlisting language="php"><![CDATA[
33 $this->_helper->json($data, array('enableJsonExprFinder' => true));
34 ]]></programlisting>
35         </listitem>
37         <listitem>
38             <para>Désactive le ViewRenderer s'il est activé.</para>
39         </listitem>
41         <listitem>
42             <para>
43                 Envoie à la réponse un en-tête 'Content-Type' à
44                 <filename>application/json</filename>.
45             </para>
46         </listitem>
48         <listitem>
49             <para>
50                 Par défaut, retourne immédiatement la réponse, sans attendre la fin de
51                 l'exécution de l'action.
52             </para>
53         </listitem>
54     </itemizedlist>
56     <para>
57         Son utilisation est toute simple, appelez le depuis le gestionnaire d'aides
58         (Broker), ou appelez une de ses méthodes <methodname>encodeJson()</methodname> ou
59         <methodname>sendJson()</methodname>&#160;:
60     </para>
62     <programlisting language="php"><![CDATA[
63 class FooController extends Zend_Controller_Action
65     public function barAction()
66     {
67         // Effectue des traitements ici ...
68         // Envoie la réponse JSON :
69         $this->_helper->json($data);
71         // ou...
72         $this->_helper->json->sendJson($data);
74         // ou retourne la chaine json:
75         $json = $this->_helper->json->encodeJson($data);
76     }
78 ]]></programlisting>
80     <note>
81         <title>Conserver les Layouts</title>
83         <para>
84             Si vous avez besoin des layouts séparés pour les réponses
85             <acronym>JSON</acronym>, pour par exemple générer vos réponses
86             <acronym>JSON</acronym> dans un contexte particulier, chaque méthode de l'aide
87             <acronym>JSON</acronym> accepte un second paramètre booléen. A
88             <constant>TRUE</constant>, les layouts resteront activées&#160;:
89         </para>
91         <programlisting language="php"><![CDATA[
92 $this->_helper->json($data, true);
93 ]]></programlisting>
95         <para>
96             Optionnellement, vous pouvez fournir un tableau en tant que second paramètre.
97             Ce tableau peut conftenir une variété d'options, incluant l'option
98             <emphasis>keepLayouts</emphasis>&#160;:
99         </para>
101         <programlisting language="php"><![CDATA[
102 $this->_helper->json($data, array('keepLayouts' => true);
103 ]]></programlisting>
104     </note>
106     <note>
107         <title>Activer l'encodage en utilisant Zend_Json_Expr</title>
109         <para>
110             <methodname>Zend_Json::encode()</methodname> permet l'encodage des
111             expressions <acronym>JSON</acronym> natives en utilisant des objets
112             <classname>Zend_Json_Expr</classname>. Cette option est désactivée par défaut. Pour
113             l'activer, fournissez la valeur booléenne <constant>TRUE</constant> à l'option
114             <emphasis>enableJsonExprFinder</emphasis>&#160;:
115         </para>
117         <programlisting language="php"><![CDATA[
118 $this->_helper->json($data, array('enableJsonExprFinder' => true);
119 ]]></programlisting>
121         <para>
122             Si vous souhaitez faire ceci, vous <emphasis>devez</emphasis> un tableau en
123             tant que second argument. Ceci vous permet aussi de combiner avec les autres
124             options, comme l'option <emphasis>keepLayouts</emphasis>. Toutes ces options sont
125             alors fournies à <methodname>Zend_Json::encode()</methodname>.
126         </para>
128         <programlisting language="php"><![CDATA[
129 $this->_helper->json($data, array(
130     'enableJsonExprFinder' => true,
131     'keepLayouts'          => true,
133 ]]></programlisting>
134     </note>
135 </sect3>