Zend_Controller-ActionHelpers-Json.xml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 16503 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.controller.actionhelpers.json">
  5. <title>JSON</title>
  6. <para>
  7. Les réponses <acronym>JSON</acronym> sont les réponses de choix dans une architecture de type <acronym>AJAX</acronym> qui
  8. attend des données structurées. <acronym>JSON</acronym> peut être immédiatement interprété du coté du client,
  9. ce qui rend la tâche plus simple et plus rapide.
  10. </para>
  11. <para>L'aide d'action <acronym>JSON</acronym> effectue plusieurs traitements&#160;:</para>
  12. <itemizedlist>
  13. <listitem>
  14. <para>Désactive les layouts si elles sont activées.</para>
  15. </listitem>
  16. <listitem>
  17. <para>
  18. Optionnellement, un tableau d'options en second argument de
  19. <methodname>Zend_Json::encode()</methodname>. Ce tableau d'options permet l'activation des
  20. layouts et l'encodage en utilisant <classname>Zend_Json_Expr</classname>.
  21. </para>
  22. <programlisting language="php"><![CDATA[
  23. $this->_helper->json($data, array('enableJsonExprFinder' => true));
  24. ]]></programlisting>
  25. </listitem>
  26. <listitem>
  27. <para>Désactive le ViewRenderer s'il est activé.</para>
  28. </listitem>
  29. <listitem>
  30. <para>Envoie à la réponse un en-tête 'Content-Type' à 'application/json'.</para>
  31. </listitem>
  32. <listitem>
  33. <para>
  34. Par défaut, retourne immédiatement la réponse, sans attendre la fin de
  35. l'exécution de l'action.
  36. </para>
  37. </listitem>
  38. </itemizedlist>
  39. <para>
  40. Son utilisation est toute simple, appelez le depuis le gestionnaire d'aides (Broker),
  41. ou appelez une de ses méthodes <methodname>encodeJson()</methodname> ou <methodname>sendJson()</methodname>&#160;:
  42. </para>
  43. <programlisting language="php"><![CDATA[
  44. class FooController extends Zend_Controller_Action
  45. {
  46. public function barAction()
  47. {
  48. // Effectue des traitements ici ...
  49. // Envoie la réponse JSON :
  50. $this->_helper->json($data);
  51. // ou...
  52. $this->_helper->json->sendJson($data);
  53. // ou retourne la chaine json:
  54. $json = $this->_helper->json->encodeJson($data);
  55. }
  56. }
  57. ]]></programlisting>
  58. <note>
  59. <title>Conserver les Layouts</title>
  60. <para>
  61. Si vous avez besoin des layouts, pour par exemple générer vos réponses <acronym>JSON</acronym> dans
  62. un contexte particulier, chaque méthode de l'aide <acronym>JSON</acronym> accepte un second paramètre
  63. booléen. A <constant>TRUE</constant>, les layouts resteront activées (par défaut à
  64. <constant>FALSE</constant>)&#160;:
  65. </para>
  66. <programlisting language="php"><![CDATA[
  67. $this->_helper->json($data, true);
  68. ]]></programlisting>
  69. <para>
  70. Optionally, you can pass an array as the second parameter. This
  71. array may contain a variety of options, including the
  72. <code>keepLayouts</code> option:
  73. </para>
  74. <programlisting language="php"><![CDATA[
  75. $this->_helper->json($data, array('keepLayouts' => true);
  76. ]]></programlisting>
  77. </note>
  78. <note>
  79. <title>Activer l'encodage en utilisant Zend_Json_Expr</title>
  80. <para>
  81. <methodname>Zend_Json::encode()</methodname> permet l'encodage des expressions <acronym>JSON</acronym> natives en
  82. utilisant des objets <classname>Zend_Json_Expr</classname>. Cette option est désactivée par
  83. défaut. Pour l'activer, fournissez la valeur booléenne <constant>TRUE</constant> à l'option
  84. <code>enableJsonExprFinder</code>&#160;:
  85. </para>
  86. <programlisting language="php"><![CDATA[
  87. $this->_helper->json($data, array('enableJsonExprFinder' => true);
  88. ]]></programlisting>
  89. <para>
  90. Si vous souhaitez faire ceci, vous <emphasis>devez</emphasis> un tableau en tant que
  91. second argument. Ceci vous permet aussi de combiner avec les autres options, comme
  92. l'option <code>keepLayouts</code>. Toutes ces options sont alors fournies à
  93. <methodname>Zend_Json::encode()</methodname>.
  94. </para>
  95. <programlisting language="php"><![CDATA[
  96. $this->_helper->json($data, array(
  97. 'enableJsonExprFinder' => true,
  98. 'keepLayouts' => true,
  99. ));
  100. ]]></programlisting>
  101. </note>
  102. </sect3>