Zend_View-Helpers-Json.xml 3.0 KB

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