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, 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 (par défaut à
false) :
_helper->json($data, true);
]]>
Optionally, you can pass an array as the second parameter. This
array may contain a variety of options, including the
keepLayouts option:
_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,
));
]]>