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,
));
]]>