Zend_Controller-ActionHelpers-Json.xml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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. Las respuestas
  8. <acronym>JSON</acronym>
  9. se están convirtiendo en la respuesta de elección
  10. cuando se trata de requerimientos
  11. <acronym>AJAX</acronym>
  12. que esperan recibir
  13. respuestas datasets; en el lado del cliente,
  14. <acronym>JSON</acronym>
  15. puede ser inmediatamente parseado y
  16. ejecutado rápidamente.
  17. </para>
  18. <para>
  19. El ayudante de acción de
  20. <acronym>JSON</acronym>
  21. hace varias cosas:
  22. </para>
  23. <itemizedlist>
  24. <listitem>
  25. <para>
  26. Deshabilita los layouts si estuvieran habilitados.
  27. </para>
  28. </listitem>
  29. <listitem>
  30. <para>
  31. Opcionalmente, un array de opciones que pasar como segundo
  32. argumento a
  33. <methodname>Zend_Json::encode()</methodname>
  34. .
  35. Este array de opciones permite habilitar layouts y
  36. codificación utilizando
  37. <classname>Zend_Json_Expr</classname>
  38. .
  39. </para>
  40. <programlisting language="php"><![CDATA[
  41. $this->_helper->json($data, array('enableJsonExprFinder' => true));
  42. ]]></programlisting>
  43. </listitem>
  44. <listitem>
  45. <para>
  46. Desactiva la ViewRenderer si está actualmente habilitada.
  47. </para>
  48. </listitem>
  49. <listitem>
  50. <para>
  51. Establece la cabecera de respuesta 'Content-Type' a '
  52. <filename>application/json</filename>
  53. '.
  54. </para>
  55. </listitem>
  56. <listitem>
  57. <para>
  58. Por defecto, devuelve inmediatamente la respuesta, sin esperar
  59. a la acción para
  60. finalizar la ejecución.
  61. </para>
  62. </listitem>
  63. </itemizedlist>
  64. <para>
  65. El uso es simple: o bien llamarlo como un método del ayudante,
  66. o llamar a uno de los métodos
  67. <methodname>encodeJson()</methodname>
  68. o
  69. <methodname>sendJson()</methodname>
  70. :
  71. </para>
  72. <programlisting language="php"><![CDATA[
  73. class FooController extends Zend_Controller_Action
  74. {
  75. public function barAction()
  76. {
  77. // hacer algún procesamiento...
  78. // Enviar la respuesta JSON:
  79. $this->_helper->json($data);
  80. // o...
  81. $this->_helper->json->sendJson($data);
  82. // o recuperar json:
  83. $json = $this->_helper->json->encodeJson($data);
  84. }
  85. }
  86. ]]></programlisting>
  87. <note>
  88. <title>Conservando los Esquemas(Layouts)</title>
  89. <para>
  90. Si se tiene un esquema separado para respuestas de
  91. <acronym>JSON</acronym>
  92. --
  93. quizás para envolver la respuesta de
  94. <acronym>JSON</acronym>
  95. en algún tipo de
  96. contexto -- cada método en el ayudante
  97. <acronym>JSON</acronym>
  98. acepta un segundo
  99. argumento opcional: un flag para activar o desactivar layouts.
  100. Pasando
  101. un valor booleano
  102. <constant>TRUE</constant>
  103. conservará los layouts
  104. habilitados:
  105. </para>
  106. <programlisting language="php"><![CDATA[
  107. $this->_helper->json($data, true);
  108. ]]></programlisting>
  109. <para>
  110. Opcionalmente, puede pasar un array como el segundo parámetro.
  111. Este array puede contener
  112. una variedad de opciones, incluida la
  113. opción
  114. <emphasis>keepLayouts</emphasis>
  115. :
  116. </para>
  117. <programlisting language="php"><![CDATA[
  118. $this->_helper->json($data, array('keepLayouts' => true);
  119. ]]></programlisting>
  120. </note>
  121. <note>
  122. <title>Habilitando la Codificación usando Zend_Json_Expr</title>
  123. <para>
  124. <methodname>Zend_Json::encode()</methodname>
  125. permite la codificación
  126. de expresiones nativas de
  127. <acronym>JSON</acronym>
  128. utilizando objetos
  129. <classname>Zend_Json_Expr</classname>
  130. . Esta opción está desactivada por
  131. defecto. Para activar esta opción, pase un valor
  132. booleano
  133. <constant>TRUE</constant>
  134. a la opción
  135. <emphasis>enableJsonExprFinder</emphasis>
  136. :
  137. </para>
  138. <programlisting language="php"><![CDATA[
  139. $this->_helper->json($data, array('enableJsonExprFinder' => true);
  140. ]]></programlisting>
  141. <para>
  142. Si desea hacer esto,
  143. <emphasis>debe</emphasis>
  144. pasar un array
  145. como segundo argumento. Esto también le permite combinar otras
  146. opciones,
  147. como la opción
  148. <emphasis>keepLayouts</emphasis>
  149. . Todas esas
  150. opciones se pasan luego a
  151. <methodname>Zend_Json::encode()</methodname>
  152. .
  153. </para>
  154. <programlisting language="php"><![CDATA[
  155. $this->_helper->json($data, array(
  156. 'enableJsonExprFinder' => true,
  157. 'keepLayouts' => true,
  158. ));
  159. ]]></programlisting>
  160. </note>
  161. </sect3>
  162. <!--
  163. vim:se ts=4 sw=4 et:
  164. -->