| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect3 id="zend.controller.actionhelpers.json">
- <title>JSON</title>
- <para>
- Las respuestas JSON se están convirtiendo en la respuesta de elección
- cuando se trata de requerimientos AJAX que esperan recibir
- respuestas datasets; en el lado del cliente, JSON puede ser inmediatamente parseado y
- ejecutado rápidamente.
- </para>
- <para>
- El ayudante de acción de JSON hace varias cosas:
- </para>
- <itemizedlist>
- <listitem><para>
- Deshabilita los layouts si estuvieran habilitados.
- </para></listitem>
- <listitem>
- <para>
- Opcionalmente, un array de opciones que pasar como segundo
- argumento a <classname>Zend_Json::encode()</classname>.
- Este array de opciones permite habilitar layouts y
- codificación utilizando <classname>Zend_Json_Expr</classname>.
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, array('enableJsonExprFinder' => true));
- ]]></programlisting>
- </listitem>
- <listitem><para>
- Desactiva la ViewRenderer si está actualmente habilitada.
- </para></listitem>
- <listitem><para>
- Establece la cabecera de respuesta 'Content-Type' a 'application/json'.
- </para></listitem>
- <listitem><para>
- Por defecto, devuelve inmediatamente la respuesta, sin esperar
- a la acción para finalizar la ejecución.
- </para></listitem>
- </itemizedlist>
- <para>
- El uso es simple: o bien llamarlo como un método del ayudante,
- o llamar a uno de los métodos <code>encodeJson()</code> o
- <code>sendJson()</code>:
- </para>
- <programlisting role="php"><![CDATA[
- class FooController extends Zend_Controller_Action
- {
- public function barAction()
- {
- // hacer algún procesamiento...
- // Enviar la respuesta JSON:
- $this->_helper->json($data);
- // o...
- $this->_helper->json->sendJson($data);
- // o recuperar json:
- $json = $this->_helper->json->encodeJson($data);
- }
- }
- ]]></programlisting>
- <note>
- <title>Conservando los Esquemas(Layouts)</title>
- <para>
- Si se tiene un esquema separado para respuestas de JSON --
- quizás para envolver la respuesta de JSON en algún tipo de
- contexto -- cada método en el ayudante JSON acepta un segundo
- argumento opcional: un flag para activar o desactivar layouts.
- Pasando un valor booleano <code>true</code> conservará los layouts
- habilitados:
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, true);
- ]]></programlisting>
- <para>
- Opcionalmente, puede pasar un array como el segundo parámetro.
- Este array puede contener una variedad de opciones, incluida la
- opción <code>keepLayouts</code>:
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, array('keepLayouts' => true);
- ]]></programlisting>
- </note>
- <note>
- <title>Habilitando la Codificación usando Zend_Json_Expr</title>
- <para>
- <classname>Zend_Json::encode()</classname> permite la codificación
- de expresiones nativas de JSON utilizando objetos
- <code>Zend_Json_Expr</code>. Esta opción está desactivada por
- defecto. Para activar esta opción, pase un valor booleano
- <code>true</code> a la opción <code>enableJsonExprFinder</code>:
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, array('enableJsonExprFinder' => true);
- ]]></programlisting>
- <para>
- Si desea hacer esto, <emphasis>debe</emphasis> pasar un array
- como segundo argumento. Esto también le permite combinar otras
- opciones, como la opción <code>keepLayouts</code>. Todas esas
- opciones se pasan luego a <classname>Zend_Json::encode()</classname>.
- </para>
- <programlisting role="php"><![CDATA[
- $this->_helper->json($data, array(
- 'enableJsonExprFinder' => true,
- 'keepLayouts' => true,
- ));
- ]]></programlisting>
- </note>
- </sect3>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|