Zend_View-Helpers-Json.xml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15742 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.view.helpers.initial.json">
  5. <title>JSON Helfer</title>
  6. <para>
  7. Wenn Views erstellt werden die JSON zurückgeben ist es wichtig auch den entsprechenden
  8. Antwort-Header zu setzen. Der JSON View Helfer macht exakt das. Zusätzlich schaltet er,
  9. standardmäßig, Layouts aus (wenn diese aktuell eingeschaltet sind), weil Layouts generell
  10. nicht mit JSON Antworten verwendet werden.
  11. </para>
  12. <para>
  13. Der JSON Helfer setzt die folgenden Header:
  14. </para>
  15. <programlisting language="text"><![CDATA[
  16. Content-Type: application/json
  17. ]]></programlisting>
  18. <para>
  19. Die meisten AJAX Bibliotheken sehen nach diesem Header wenn die Antworten geparst werden um
  20. festzustellen wie der Inhalt handzuhaben ist.
  21. </para>
  22. <para>
  23. Die Verwendung des JSON Helfers ist sehr geradlienig:
  24. </para>
  25. <programlisting language="php"><![CDATA[
  26. <?php echo $this->json($this->data) ?>
  27. ]]></programlisting>
  28. <note>
  29. <title>Layouts behalten und Encoding einschalten durch Verwendung von Zend_Json_Expr</title>
  30. <para>
  31. Jede Methode im JSON Helfer akzwptiert ein zweites, optionales, Argument. Dieses
  32. zweite Argument kan ein boolsches Flag sein um Layouts ein- oder auszuschalten, oder
  33. ein Array von Optionen die an <code>Zend_Json::encode()</code> übergeben und intern
  34. verwendet werden um Daten zu kodieren.
  35. </para>
  36. <para>
  37. Um Layouts zu behalten muß der zweite Parameter ein boolsches <constant>TRUE</constant> sein.
  38. Wenn der zweite Parameter ein Array ist, können Layouts behalten werden indem ein
  39. <code>keepLayouts</code> Schlüssel mit dem boolschen Wert <constant>TRUE</constant>
  40. eingefügt wird.
  41. </para>
  42. <programlisting language="php"><![CDATA[
  43. // Ein boolsches true als zweites Argument aktiviert Layouts:
  44. echo $this->json($this->data, true);
  45. // Oder ein boolsches true als "keepLayouts" Schlüssel:
  46. echo $this->json($this->data, array('keepLayouts' => true));
  47. ]]></programlisting>
  48. <para>
  49. <classname>Zend_Json::encode</classname> erlaubt es native JSON Ausdrücke zu kodieren
  50. indem <classname>Zend_Json_Expr</classname> Objekte verwendet werden. Diese Option
  51. ist standardmäßig deaktiviert. Um diese Option zu aktivieren, muß ein boolsches
  52. <constant>TRUE</constant> an den <code>enableJsonExprFinder</code> Schlüssel des Options
  53. Arrays übergeben werden:
  54. </para>
  55. <programlisting language="php"><![CDATA[
  56. <?php echo $this->json($this->data, array(
  57. 'enableJsonExprFinder' => true,
  58. 'keepLayouts' => true,
  59. )) ?>
  60. ]]></programlisting>
  61. </note>
  62. </sect3>
  63. <!--
  64. vim:se ts=4 sw=4 et:
  65. -->