| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 15617 -->
- <!-- Reviewed: no -->
- <sect3 id="zend.controller.actionhelpers.json">
- <title>JSON</title>
- <para>
- Les réponses JSON sont les réponses de choix dans une architecture de type AJAX qui
- attend des données structurées. JSON peut être immédiatement interprété du coté du client,
- ce qui rend la tâche plus simple et plus rapide.
- </para>
- <para>L'aide d'action JSON effectue plusieurs traitements :</para>
- <itemizedlist>
- <listitem>
- <para>Désactive les layouts si elles sont activées.</para>
- </listitem>
- <listitem>
- <para>
- Optionnellement, un tableau d'options en second argument de
- <code>Zend_Json::encode()</code>. Ce tableau d'options permet l'activation des
- layouts et l'encodage en utilisant <code>Zend_Json_Expr</code>.
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array('enableJsonExprFinder' => true));
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>Désactive le ViewRenderer s'il est activé.</para>
- </listitem>
- <listitem>
- <para>Envoie à la réponse un en-tête 'Content-Type' à 'application/json'.</para>
- </listitem>
- <listitem>
- <para>
- Par défaut, retourne immédiatement la réponse, sans attendre la fin de
- l'exécution de l'action.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Son utilisation est toute simple, appelez le depuis le gestionnaire d'aides (Broker),
- ou appelez une de ses méthodes <code>encodeJson()</code> ou <code>sendJson()</code> :
- </para>
- <programlisting language="php"><![CDATA[
- class FooController extends Zend_Controller_Action
- {
- public function barAction()
- {
- // Effectue des traitements ici ...
- // Envoie la réponse JSON :
- $this->_helper->json($data);
- // ou...
- $this->_helper->json->sendJson($data);
- // ou retourne la chaine json:
- $json = $this->_helper->json->encodeJson($data);
- }
- }
- ]]></programlisting>
- <note>
- <title>Conserver les Layouts</title>
- <para>
- Si vous avez besoin des layouts, pour par exemple générer vos réponses JSON dans
- un contexte particulier, chaque méthode de l'aide JSON accepte un second paramètre
- booléen. A <code>true</code>, les layouts resteront activées (par défaut à
- <code>false</code>) :
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, true);
- ]]></programlisting>
- <para>
- Optionally, you can pass an array as the second parameter. This
- array may contain a variety of options, including the
- <code>keepLayouts</code> option:
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array('keepLayouts' => true);
- ]]></programlisting>
- </note>
- <note>
- <title>Activer l'encodage en utilisant Zend_Json_Expr</title>
- <para>
- <code>Zend_Json::encode()</code> permet l'encodage des expressions JSON natives en
- utilisant des objets <code>Zend_Json_Expr</code>. Cette option est désactivée par
- défaut. Pour l'activer, fournissez la valeur booléenne <code>true</code> à l'option
- <code>enableJsonExprFinder</code> :
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array('enableJsonExprFinder' => true);
- ]]></programlisting>
- <para>
- Si vous souhaitez faire ceci, vous <emphasis>devez</emphasis> un tableau en tant que
- second argument. Ceci vous permet aussi de combiner avec les autres options, comme
- l'option <code>keepLayouts</code>. Toutes ces options sont alors fournies à
- <code>Zend_Json::encode()</code>.
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array(
- 'enableJsonExprFinder' => true,
- 'keepLayouts' => true,
- ));
- ]]></programlisting>
- </note>
- </sect3>
|