1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- EN-Revision: 20765 -->
4 <sect3 id="zend.controller.actionhelpers.json">
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.
15 L'aide d'action <acronym>JSON</acronym> effectue plusieurs
21 <para>Désactive les layouts si elles sont activées.</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>.
32 <programlisting language="php"><![CDATA[
33 $this->_helper->json($data, array('enableJsonExprFinder' => true));
38 <para>Désactive le ViewRenderer s'il est activé.</para>
43 Envoie à la réponse un en-tête 'Content-Type' à
44 <filename>application/json</filename>.
50 Par défaut, retourne immédiatement la réponse, sans attendre la fin de
51 l'exécution de l'action.
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> :
62 <programlisting language="php"><![CDATA[
63 class FooController extends Zend_Controller_Action
65 public function barAction()
67 // Effectue des traitements ici ...
68 // Envoie la réponse JSON :
69 $this->_helper->json($data);
72 $this->_helper->json->sendJson($data);
74 // ou retourne la chaine json:
75 $json = $this->_helper->json->encodeJson($data);
81 <title>Conserver les Layouts</title>
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 :
91 <programlisting language="php"><![CDATA[
92 $this->_helper->json($data, true);
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> :
101 <programlisting language="php"><![CDATA[
102 $this->_helper->json($data, array('keepLayouts' => true);
107 <title>Activer l'encodage en utilisant Zend_Json_Expr</title>
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> :
117 <programlisting language="php"><![CDATA[
118 $this->_helper->json($data, array('enableJsonExprFinder' => true);
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>.
128 <programlisting language="php"><![CDATA[
129 $this->_helper->json($data, array(
130 'enableJsonExprFinder' => true,
131 'keepLayouts' => true,