Zend_Controller-ActionHelpers-Json.xml 4.3 KB

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