Zend_Controller-ActionHelpers-Json.xml 4.6 KB

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