Zend_Controller-ActionHelpers-Json.xml 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 24249 -->
  4. <sect3 id="zend.controller.actionhelpers.json">
  5. <title>JSON(日本語)</title>
  6. <para>
  7. <acronym>JSON</acronym> レスポンスは、<acronym>AJAX</acronym> リクエストでデータセットを受け取るときの
  8. 形式としてすっかり定着しました。<acronym>JSON</acronym> はクライアント側で
  9. すぐにパースすることができ、すばやく実行できます。
  10. </para>
  11. <para>
  12. <acronym>JSON</acronym> アクションヘッダは次のようなことを行います。
  13. </para>
  14. <itemizedlist>
  15. <listitem>
  16. <para>
  17. レイアウト機能が有効になっている場合はそれを無効にする。
  18. </para>
  19. </listitem>
  20. <listitem>
  21. <para>
  22. 任意で、オプションの配列を
  23. <methodname>Zend_Json::encode()</methodname> の 2 番目の引数として渡す。
  24. このオプションの配列で、レイアウト機能を有効にしたり
  25. <classname>Zend_Json_Expr</classname> によるエンコードを有効にしたりする。
  26. </para>
  27. <programlisting language="php"><![CDATA[
  28. $this->_helper->json($data, array('enableJsonExprFinder' => true));
  29. ]]></programlisting>
  30. </listitem>
  31. <listitem>
  32. <para>
  33. ViewRenderer が有効になっている場合にそれを無効にする。
  34. </para>
  35. </listitem>
  36. <listitem>
  37. <para>
  38. 'Content-Type' レスポンスヘッダを '<filename>application/json</filename>' に設定する。
  39. </para>
  40. </listitem>
  41. <listitem>
  42. <para>
  43. デフォルトでレスポンスをすぐに返す。
  44. アクションの実行が終了するのを待たない。
  45. </para>
  46. </listitem>
  47. </itemizedlist>
  48. <para>
  49. 使い方は簡単です。ヘルパーブローカのメソッドとしてコールするか、
  50. <methodname>encodeJson()</methodname> あるいは
  51. <methodname>sendJson()</methodname> といったメソッドをコールするだけです。
  52. </para>
  53. <programlisting language="php"><![CDATA[
  54. class FooController extends Zend_Controller_Action
  55. {
  56. public function barAction()
  57. {
  58. // 何らかの処理をして...
  59. // JSON レスポンスを返します
  60. $this->_helper->json($data);
  61. // あるいは...
  62. $this->_helper->json->sendJson($data);
  63. // あるいは JSON を取得します
  64. $json = $this->_helper->json->encodeJson($data);
  65. }
  66. }
  67. ]]></programlisting>
  68. <note>
  69. <title>レイアウトの維持</title>
  70. <para>
  71. <acronym>JSON</acronym> レスポンスでレイアウト機能を使用したい場合
  72. (いくつかの <acronym>JSON</acronym> レスポンスをひとつにまとめて処理するなど)
  73. のために、<acronym>JSON</acronym> ヘルパーの各メソッドには
  74. 2 番目の引数が用意されています。
  75. この引数はオプションのフラグで、レイアウト機能を有効あるいは無効にします。
  76. <constant>TRUE</constant> を渡すと、レイアウト機能を有効なままにします。
  77. </para>
  78. <programlisting language="php"><![CDATA[
  79. $this->_helper->json($data, true);
  80. ]]></programlisting>
  81. <para>
  82. オプションで、2 番目の引数に配列を渡すことができます。
  83. この配列には、<emphasis>keepLayouts</emphasis>
  84. のオプションを含むさまざまなオプションを指定できます。
  85. </para>
  86. <programlisting language="php"><![CDATA[
  87. $this->_helper->json($data, array('keepLayouts' => true);
  88. ]]></programlisting>
  89. </note>
  90. <note>
  91. <title>Zend_Json_Expr を使用したエンコードの有効化</title>
  92. <para>
  93. <methodname>Zend_Json::encode()</methodname> は、ネイティブ <acronym>JSON</acronym> 式を
  94. <classname>Zend_Json_Expr</classname> オブジェクトを使用してエンコードできます。
  95. このオプションはデフォルトでは無効になっています。
  96. 有効にするには、<emphasis>enableJsonExprFinder</emphasis>
  97. オプションに <constant>TRUE</constant> を設定します。
  98. </para>
  99. <programlisting language="php"><![CDATA[
  100. $this->_helper->json($data, array('enableJsonExprFinder' => true);
  101. ]]></programlisting>
  102. <para>
  103. これを行いたい場合は、2 番目の引数に必ず配列を渡さなければなりません。
  104. また、たとえば <emphasis>keepLayouts</emphasis> のような他のオプションと組み合わせることもできます。
  105. これらすべてのオプションが <methodname>Zend_Json::encode()</methodname> に渡されます。
  106. </para>
  107. <programlisting language="php"><![CDATA[
  108. $this->_helper->json($data, array(
  109. 'enableJsonExprFinder' => true,
  110. 'keepLayouts' => true,
  111. ));
  112. ]]></programlisting>
  113. </note>
  114. </sect3>
  115. <!--
  116. vim:se ts=4 sw=4 et:
  117. -->