JSON
Les réponses JSON sont les réponses de choix dans une
architecture de type AJAX qui attend des données structurées.
JSON peut être immédiatement interprété du coté du client, ce qui
rend la tâche plus simple et plus rapide.
L'aide d'action JSON effectue plusieurs
traitements :
Désactive les layouts si elles sont activées.
Optionnellement, un tableau d'options en second argument de
Zend_Json::encode(). Ce tableau d'options permet
l'activation des layouts et l'encodage en utilisant
Zend_Json_Expr.
_helper->json($data, array('enableJsonExprFinder' => true));
]]>
Désactive le ViewRenderer s'il est activé.
Envoie à la réponse un en-tête 'Content-Type' à
application/json.
Par défaut, retourne immédiatement la réponse, sans attendre la fin de
l'exécution de l'action.
Son utilisation est toute simple, appelez le depuis le gestionnaire d'aides
(Broker), ou appelez une de ses méthodes encodeJson() ou
sendJson() :
_helper->json($data);
// ou...
$this->_helper->json->sendJson($data);
// ou retourne la chaine json:
$json = $this->_helper->json->encodeJson($data);
}
}
]]>
Conserver les Layouts
Si vous avez besoin des layouts séparés pour les réponses
JSON, pour par exemple générer vos réponses
JSON dans un contexte particulier, chaque méthode de l'aide
JSON accepte un second paramètre booléen. A
TRUE, les layouts resteront activées :
_helper->json($data, true);
]]>
Optionnellement, vous pouvez fournir un tableau en tant que second paramètre.
Ce tableau peut conftenir une variété d'options, incluant l'option
keepLayouts :
_helper->json($data, array('keepLayouts' => true);
]]>
Activer l'encodage en utilisant Zend_Json_Expr
Zend_Json::encode() permet l'encodage des
expressions JSON natives en utilisant des objets
Zend_Json_Expr. Cette option est désactivée par défaut. Pour
l'activer, fournissez la valeur booléenne TRUE à l'option
enableJsonExprFinder :
_helper->json($data, array('enableJsonExprFinder' => true);
]]>
Si vous souhaitez faire ceci, vous devez un tableau en
tant que second argument. Ceci vous permet aussi de combiner avec les autres
options, comme l'option keepLayouts. Toutes ces options sont
alors fournies à Zend_Json::encode().
_helper->json($data, array(
'enableJsonExprFinder' => true,
'keepLayouts' => true,
));
]]>