JSON
JSON Antworten sind die Antworten der Wahl wenn mit AJAX Anfragen gearbeitet wird die
Dataset Antworten erwarten; JSON kann sofort auf Seite des Clienten geparst werden, was zu
schneller Ausführung führt.
Der JSON Action Helfer macht verschiedene Dinge:
Layouts auschalten wenn sie aktuell aktiviert sind.
Optional ein Array von Optionen als zweites Argument an
Zend_Json::encode() übergeben. Dieses Array von Optionen erlaubt es
Layouts und Kodierungen einzuschalten indem Zend_Json_Expr verwendet
wird.
_helper->json($data, array('enableJsonExprFinder' => true));
]]>
Den ViewRenderer ausschalten wenn er aktiviert ist.
Den 'Content-Type' Antwort Header auf 'application/json' setzen.
Standardmäßig, die Antwort sofort zurückgeben, ohne darauf zu warten das die Aktion
die Ausführung beendet.
Die Verwendung ist einfach: Entweder als Methode des Helfer Brokers aufrufen, oder eine der
Methoden encodeJson() oder sendJson() aufrufen:
_helper->json($data);
// oder...
$this->_helper->json->sendJson($data);
// oder das JSON empfangen:
$json = $this->_helper->json->encodeJson($data);
}
}
]]>
Layouts behalten
Wenn man ein separates Layout für JSON Antworten hat -- möglicherweise um die JSON
Antworten in einer Art Kontext zu wrappen -- akzeptiert jede Methode im JSON Helfer
ein zweites, optionales Argument: Ein Flag um Layouts zu aktivieren oder deaktivieren.
Die Übergabe eines boolschen true Wertes hält Layouts aktiviert:
_helper->json($data, true);
]]>
Optional kann ein Array als zweiter Parameter übergeben werden. Dieses Array kann eine
Vielzahl von Optionen enthalten, inklusive der keepLayouts Option:
_helper->json($data, array('keepLayouts' => true);
]]>
Kodierung einschalten durch Verwendung von Zend_Json_Expr
Zend_Json::encode() erlaubt die Kodierung von nativen JSON Ausdrücken
indem Zend_Json_Expr Objekte verwendet werden. Diese Option ist
standardmäßig ausgeschaltet. Um diese Option einzuschalten muß ein boolscher
true Wert an die enableJsonExprFinder Option übergeben
werden:
_helper->json($data, array('enableJsonExprFinder' => true);
]]>
Wenn man das durchführen will, muss man ein Array als zweite
Option übergeben. Das erlaubt es auch andere Optionen, wie zum Beispiel die
keepLayouts Option, zu kombinieren. Alle diese Optionen werden dann
an Zend_Json::encode() übergeben.
_helper->json($data, array(
'enableJsonExprFinder' => true,
'keepLayouts' => true,
));
]]>