JSON
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.
El ayudante de acción de
JSON
hace varias cosas:
Deshabilita los layouts si estuvieran habilitados.
Opcionalmente, un array de opciones que pasar como segundo
argumento a
Zend_Json::encode()
.
Este array de opciones permite habilitar layouts y
codificación utilizando
Zend_Json_Expr
.
_helper->json($data, array('enableJsonExprFinder' => true));
]]>
Desactiva la ViewRenderer si está actualmente habilitada.
Establece la cabecera de respuesta 'Content-Type' a '
application/json
'.
Por defecto, devuelve inmediatamente la respuesta, sin esperar
a la acción para
finalizar la ejecución.
El uso es simple: o bien llamarlo como un método del ayudante,
o llamar a uno de los métodos
encodeJson()
o
sendJson()
:
_helper->json($data);
// o...
$this->_helper->json->sendJson($data);
// o recuperar json:
$json = $this->_helper->json->encodeJson($data);
}
}
]]>
Conservando los Esquemas(Layouts)
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
TRUE
conservará los layouts
habilitados:
_helper->json($data, true);
]]>
Opcionalmente, puede pasar un array como el segundo parámetro.
Este array puede contener
una variedad de opciones, incluida la
opción
keepLayouts
:
_helper->json($data, array('keepLayouts' => true);
]]>
Habilitando la Codificación usando Zend_Json_Expr
Zend_Json::encode()
permite la codificación
de expresiones nativas de
JSON
utilizando objetos
Zend_Json_Expr
. Esta opción está desactivada por
defecto. Para activar esta opción, pase un valor
booleano
TRUE
a la opción
enableJsonExprFinder
:
_helper->json($data, array('enableJsonExprFinder' => true);
]]>
Si desea hacer esto,
debe
pasar un array
como segundo argumento. Esto también le permite combinar otras
opciones,
como la opción
keepLayouts
. Todas esas
opciones se pasan luego a
Zend_Json::encode()
.
_helper->json($data, array(
'enableJsonExprFinder' => true,
'keepLayouts' => true,
));
]]>