Zend_Controller-ActionHelpers-Json.xml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.controller.actionhelpers.json">
  5. <title>JSON</title>
  6. <para>
  7. Las respuestas JSON se están convirtiendo en la respuesta de elección
  8. cuando se trata de requerimientos AJAX que esperan recibir
  9. respuestas datasets; en el lado del cliente, JSON puede ser inmediatamente parseado y
  10. ejecutado rápidamente.
  11. </para>
  12. <para>
  13. El ayudante de acción de JSON hace varias cosas:
  14. </para>
  15. <itemizedlist>
  16. <listitem><para>
  17. Deshabilita los layouts si estuvieran habilitados.
  18. </para></listitem>
  19. <listitem>
  20. <para>
  21. Opcionalmente, un array de opciones que pasar como segundo
  22. argumento a <classname>Zend_Json::encode()</classname>.
  23. Este array de opciones permite habilitar layouts y
  24. codificación utilizando <classname>Zend_Json_Expr</classname>.
  25. </para>
  26. <programlisting language="php"><![CDATA[
  27. $this->_helper->json($data, array('enableJsonExprFinder' => true));
  28. ]]></programlisting>
  29. </listitem>
  30. <listitem><para>
  31. Desactiva la ViewRenderer si está actualmente habilitada.
  32. </para></listitem>
  33. <listitem><para>
  34. Establece la cabecera de respuesta 'Content-Type' a 'application/json'.
  35. </para></listitem>
  36. <listitem><para>
  37. Por defecto, devuelve inmediatamente la respuesta, sin esperar
  38. a la acción para finalizar la ejecución.
  39. </para></listitem>
  40. </itemizedlist>
  41. <para>
  42. El uso es simple: o bien llamarlo como un método del ayudante,
  43. o llamar a uno de los métodos <methodname>encodeJson()</methodname> o
  44. <methodname>sendJson()</methodname>:
  45. </para>
  46. <programlisting language="php"><![CDATA[
  47. class FooController extends Zend_Controller_Action
  48. {
  49. public function barAction()
  50. {
  51. // hacer algún procesamiento...
  52. // Enviar la respuesta JSON:
  53. $this->_helper->json($data);
  54. // o...
  55. $this->_helper->json->sendJson($data);
  56. // o recuperar json:
  57. $json = $this->_helper->json->encodeJson($data);
  58. }
  59. }
  60. ]]></programlisting>
  61. <note>
  62. <title>Conservando los Esquemas(Layouts)</title>
  63. <para>
  64. Si se tiene un esquema separado para respuestas de JSON --
  65. quizás para envolver la respuesta de JSON en algún tipo de
  66. contexto -- cada método en el ayudante JSON acepta un segundo
  67. argumento opcional: un flag para activar o desactivar layouts.
  68. Pasando un valor booleano <methodname>true</methodname> conservará los layouts
  69. habilitados:
  70. </para>
  71. <programlisting language="php"><![CDATA[
  72. $this->_helper->json($data, true);
  73. ]]></programlisting>
  74. <para>
  75. Opcionalmente, puede pasar un array como el segundo parámetro.
  76. Este array puede contener una variedad de opciones, incluida la
  77. opción <methodname>keepLayouts</methodname>:
  78. </para>
  79. <programlisting language="php"><![CDATA[
  80. $this->_helper->json($data, array('keepLayouts' => true);
  81. ]]></programlisting>
  82. </note>
  83. <note>
  84. <title>Habilitando la Codificación usando Zend_Json_Expr</title>
  85. <para>
  86. <classname>Zend_Json::encode()</classname> permite la codificación
  87. de expresiones nativas de JSON utilizando objetos
  88. <methodname>Zend_Json_Expr</methodname>. Esta opción está desactivada por
  89. defecto. Para activar esta opción, pase un valor booleano
  90. <methodname>true</methodname> a la opción <methodname>enableJsonExprFinder</methodname>:
  91. </para>
  92. <programlisting language="php"><![CDATA[
  93. $this->_helper->json($data, array('enableJsonExprFinder' => true);
  94. ]]></programlisting>
  95. <para>
  96. Si desea hacer esto, <emphasis>debe</emphasis> pasar un array
  97. como segundo argumento. Esto también le permite combinar otras
  98. opciones, como la opción <methodname>keepLayouts</methodname>. Todas esas
  99. opciones se pasan luego a <classname>Zend_Json::encode()</classname>.
  100. </para>
  101. <programlisting language="php"><![CDATA[
  102. $this->_helper->json($data, array(
  103. 'enableJsonExprFinder' => true,
  104. 'keepLayouts' => true,
  105. ));
  106. ]]></programlisting>
  107. </note>
  108. </sect3>
  109. <!--
  110. vim:se ts=4 sw=4 et:
  111. -->