Zend_Controller-ActionHelpers-Json.xml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 15617 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.controller.actionhelpers.json">
  5. <title>JSON</title>
  6. <para>
  7. Les réponses JSON sont les réponses de choix dans une architecture de type AJAX qui
  8. attend des données structurées. JSON 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 JSON 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. <code>Zend_Json::encode()</code>. Ce tableau d'options permet l'activation des
  20. layouts et l'encodage en utilisant <code>Zend_Json_Expr</code>.
  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 <code>encodeJson()</code> ou <code>sendJson()</code>&#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 JSON dans
  62. un contexte particulier, chaque méthode de l'aide JSON accepte un second paramètre
  63. booléen. A <code>true</code>, les layouts resteront activées (par défaut à
  64. <code>false</code>)&#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. <code>Zend_Json::encode()</code> permet l'encodage des expressions JSON natives en
  82. utilisant des objets <code>Zend_Json_Expr</code>. Cette option est désactivée par
  83. défaut. Pour l'activer, fournissez la valeur booléenne <code>true</code> à 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. <code>Zend_Json::encode()</code>.
  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>