Zend_Controller-ActionHelpers-Json.xml 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 14978 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.controller.actionhelpers.json">
  5. <title>JSON</title>
  6. <para>
  7. JSON Antworten sind die Antworten der Wahl wenn mit AJAX Anfragen gearbeitet wird die
  8. Dataset Antworten erwarten; JSON kann sofort auf Seite des Clienten geparst werden, was zu
  9. schneller Ausführung führt.
  10. </para>
  11. <para>
  12. Der JSON Action Helfer macht verschiedene Dinge:
  13. </para>
  14. <itemizedlist>
  15. <listitem><para>
  16. Layouts auschalten wenn sie aktuell aktiviert sind.
  17. </para></listitem>
  18. <listitem><para>
  19. Den ViewRenderer ausschalten wenn er aktiviert ist.
  20. </para></listitem>
  21. <listitem><para>
  22. Den 'Content-Type' Antwort Header auf 'application/json' setzen.
  23. </para></listitem>
  24. <listitem><para>
  25. Standardmäßig, die Antwort sofort zurückgeben, ohne darauf zu warten das die Aktion
  26. die Ausführung beendet.
  27. </para></listitem>
  28. </itemizedlist>
  29. <para>
  30. Die Verwendung ist einfach: Entweder als Methode des Helfer Brokers aufrufen, oder eine der
  31. Methoden <code>encodeJson()</code> oder <code>sendJson()</code> aufrufen:
  32. </para>
  33. <programlisting role="php"><![CDATA[
  34. class FooController extends Zend_Controller_Action
  35. {
  36. public function barAction()
  37. {
  38. // einige Berechnungen durchführen...
  39. // Die JSON Antwort senden:
  40. $this->_helper->json($data);
  41. // oder...
  42. $this->_helper->json->sendJson($data);
  43. // oder das JSON empfangen:
  44. $json = $this->_helper->json->encodeJson($data);
  45. }
  46. }
  47. ]]>
  48. </programlisting>
  49. <note>
  50. <title>Layouts behalten</title>
  51. <para>
  52. Wenn man ein separates Layout für JSON Antworten hat -- möglicherweise um die JSON
  53. Antworten in einer Art Kontext zu wrappen -- akzeptiert jede Methode im JSON Helfer
  54. ein zweites, optionales Argument: Ein Flag um Layouts zu aktivieren oder deaktivieren.
  55. Die Übergabe eines boolschen <code>true</code> Wertes hält Layouts aktiviert:
  56. </para>
  57. <programlisting role="php"><![CDATA[
  58. class FooController extends Zend_Controller_Action
  59. {
  60. public function barAction()
  61. {
  62. // JSON empfangen, Layouts erhalten:
  63. $json = $this->_helper->json->encodeJson($data, true);
  64. }
  65. }
  66. ]]>
  67. </programlisting>
  68. </note>
  69. </sect3>
  70. <!--
  71. vim:se ts=4 sw=4 et:
  72. -->