Zend_View-Helpers-Json.xml 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 24829 -->
  4. <sect3 id="zend.view.helpers.initial.json">
  5. <title>JSON ヘルパー</title>
  6. <para>
  7. <acronym>JSON</acronym> を返すビューを作成する際に大事なのは、
  8. 適切なレスポンスヘッダを設定することです。
  9. <acronym>JSON</acronym> ビューヘルパーは、まさにその作業を行います。
  10. さらに、デフォルトでレイアウト機能を無効にします (現在有効である場合)。
  11. <acronym>JSON</acronym> レスポンスでは通常レイアウト機能は使わないからです。
  12. </para>
  13. <para>
  14. <acronym>JSON</acronym> ヘルパーは次のようなヘッダを設定します。
  15. </para>
  16. <programlisting language="text"><![CDATA[
  17. Content-Type: application/json
  18. ]]></programlisting>
  19. <para>
  20. たいていの <acronym>AJAX</acronym> ライブラリは、
  21. レスポンスでこのヘッダを見つけると適切に処理してくれます。
  22. </para>
  23. <para>
  24. <acronym>JSON</acronym> ヘルパーの使用法は、このように非常に単純です。
  25. </para>
  26. <programlisting language="php"><![CDATA[
  27. <?php echo $this->json($this->data) ?>
  28. ]]></programlisting>
  29. <note>
  30. <title>レイアウトの維持、およびZend_Json_Expr によるエンコードの有効化</title>
  31. <para>
  32. <acronym>JSON</acronym> ヘルパーの各メソッドには、オプションで 2 番目の引数を指定できます。
  33. この 2 番目の引数は、レイアウト機能の有効/無効を指定する boolean フラグか
  34. あるいは <methodname>Zend_Json::encode()</methodname>
  35. に渡して内部的なデータのエンコードに使用するオプションの配列となります。
  36. </para>
  37. <para>
  38. レイアウトを維持するには、2 番目のパラメータを
  39. <constant>TRUE</constant> としなければなりません。
  40. 2 番目のパラメータを配列ににする場合にレイアウトを維持するには、配列に
  41. <property>keepLayouts</property> というキーを含め、その値を
  42. <constant>TRUE</constant> にします。
  43. </para>
  44. <programlisting language="php"><![CDATA[
  45. // 2 番目の引数に true を指定するとレイアウトが有効になります
  46. echo $this->json($this->data, true);
  47. // あるいは、キー "keepLayouts" に true を指定します
  48. echo $this->json($this->data, array('keepLayouts' => true));
  49. ]]></programlisting>
  50. <para>
  51. <methodname>Zend_Json::encode()</methodname> は、ネイティブ <acronym>JSON</acronym> 式を
  52. <classname>Zend_Json_Expr</classname> オブジェクトを使用してエンコードできます。
  53. このオプションはデフォルトでは無効になっています。
  54. 有効にするには、<property>enableJsonExprFinder</property>
  55. オプションに <constant>TRUE</constant> を設定します。
  56. </para>
  57. <programlisting language="php"><![CDATA[
  58. <?php echo $this->json($this->data, array(
  59. 'enableJsonExprFinder' => true,
  60. 'keepLayouts' => true,
  61. )) ?>
  62. ]]></programlisting>
  63. </note>
  64. <!-- TODO : to be translated -->
  65. <note>
  66. <title>Sending pre-encoded JSON</title>
  67. <para>
  68. By default, the <acronym>JSON</acronym> helper will JSON-encode the
  69. data provided to the helper's first parameter. If you wish to pass
  70. in data which has already been encoded into <acronym>JSON</acronym>,
  71. the third parameter needs to be set to boolean <constant>FALSE</constant>.
  72. When the second parameter is an array, disabling <acronym>JSON</acronym>
  73. encoding can be achived by including a <property>encodeData</property>
  74. key with the value of boolean <constant>FALSE</constant>:
  75. </para>
  76. <programlisting language="php"><![CDATA[
  77. // Boolean false as third argument disables internal JSON encoding of data
  78. echo $this->json($this->data, false, false);
  79. // Or boolean false as "encodeData" key:
  80. echo $this->json($this->data, array('encodeData' => false));
  81. ]]></programlisting>
  82. </note>
  83. </sect3>
  84. <!--
  85. vim:se ts=4 sw=4 et:
  86. -->