| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect3 id="zend.controller.actionhelpers.json">
- <title>JSON</title>
- <para>
- Las respuestas
- <acronym>JSON</acronym>
- se están convirtiendo en la respuesta de elección
- cuando se trata de requerimientos
- <acronym>AJAX</acronym>
- que esperan recibir
- respuestas datasets; en el lado del cliente,
- <acronym>JSON</acronym>
- puede ser inmediatamente parseado y
- ejecutado rápidamente.
- </para>
- <para>
- El ayudante de acción de
- <acronym>JSON</acronym>
- 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
- <methodname>Zend_Json::encode()</methodname>
- .
- Este array de opciones permite habilitar layouts y
- codificación utilizando
- <classname>Zend_Json_Expr</classname>
- .
- </para>
- <programlisting language="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 '
- <filename>application/json</filename>
- '.
- </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
- <methodname>encodeJson()</methodname>
- o
- <methodname>sendJson()</methodname>
- :
- </para>
- <programlisting language="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
- <acronym>JSON</acronym>
- --
- quizás para envolver la respuesta de
- <acronym>JSON</acronym>
- en algún tipo de
- contexto -- cada método en el ayudante
- <acronym>JSON</acronym>
- acepta un segundo
- argumento opcional: un flag para activar o desactivar layouts.
- Pasando
- un valor booleano
- <constant>TRUE</constant>
- conservará los layouts
- habilitados:
- </para>
- <programlisting language="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
- <emphasis>keepLayouts</emphasis>
- :
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array('keepLayouts' => true);
- ]]></programlisting>
- </note>
- <note>
- <title>Habilitando la Codificación usando Zend_Json_Expr</title>
- <para>
- <methodname>Zend_Json::encode()</methodname>
- permite la codificación
- de expresiones nativas de
- <acronym>JSON</acronym>
- utilizando objetos
- <classname>Zend_Json_Expr</classname>
- . Esta opción está desactivada por
- defecto. Para activar esta opción, pase un valor
- booleano
- <constant>TRUE</constant>
- a la opción
- <emphasis>enableJsonExprFinder</emphasis>
- :
- </para>
- <programlisting language="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
- <emphasis>keepLayouts</emphasis>
- . Todas esas
- opciones se pasan luego a
- <methodname>Zend_Json::encode()</methodname>
- .
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->json($data, array(
- 'enableJsonExprFinder' => true,
- 'keepLayouts' => true,
- ));
- ]]></programlisting>
- </note>
- </sect3>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|