|
|
@@ -1,139 +0,0 @@
|
|
|
-<?xml version="1.0" encoding="UTF-8"?>
|
|
|
-<!-- Reviewed: no -->
|
|
|
-<!-- EN-Revision: 24249 -->
|
|
|
-<sect3 id="zend.controller.actionhelpers.json">
|
|
|
- <title>JSON(日本語)</title>
|
|
|
-
|
|
|
- <para>
|
|
|
- <acronym>JSON</acronym> レスポンスは、<acronym>AJAX</acronym> リクエストでデータセットを受け取るときの
|
|
|
- 形式としてすっかり定着しました。<acronym>JSON</acronym> はクライアント側で
|
|
|
- すぐにパースすることができ、すばやく実行できます。
|
|
|
- </para>
|
|
|
-
|
|
|
- <para>
|
|
|
- <acronym>JSON</acronym> アクションヘッダは次のようなことを行います。
|
|
|
- </para>
|
|
|
-
|
|
|
- <itemizedlist>
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- レイアウト機能が有効になっている場合はそれを無効にする。
|
|
|
- </para>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- 任意で、オプションの配列を
|
|
|
- <methodname>Zend_Json::encode()</methodname> の 2 番目の引数として渡す。
|
|
|
- このオプションの配列で、レイアウト機能を有効にしたり
|
|
|
- <classname>Zend_Json_Expr</classname> によるエンコードを有効にしたりする。
|
|
|
- </para>
|
|
|
-
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
-$this->_helper->json($data, array('enableJsonExprFinder' => true));
|
|
|
-]]></programlisting>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- ViewRenderer が有効になっている場合にそれを無効にする。
|
|
|
- </para>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- 'Content-Type' レスポンスヘッダを '<filename>application/json</filename>' に設定する。
|
|
|
- </para>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>
|
|
|
- デフォルトでレスポンスをすぐに返す。
|
|
|
- アクションの実行が終了するのを待たない。
|
|
|
- </para>
|
|
|
- </listitem>
|
|
|
- </itemizedlist>
|
|
|
-
|
|
|
- <para>
|
|
|
- 使い方は簡単です。ヘルパーブローカのメソッドとしてコールするか、
|
|
|
- <methodname>encodeJson()</methodname> あるいは
|
|
|
- <methodname>sendJson()</methodname> といったメソッドをコールするだけです。
|
|
|
- </para>
|
|
|
-
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
-class FooController extends Zend_Controller_Action
|
|
|
-{
|
|
|
- public function barAction()
|
|
|
- {
|
|
|
- // 何らかの処理をして...
|
|
|
- // JSON レスポンスを返します
|
|
|
- $this->_helper->json($data);
|
|
|
-
|
|
|
- // あるいは...
|
|
|
- $this->_helper->json->sendJson($data);
|
|
|
-
|
|
|
- // あるいは JSON を取得します
|
|
|
- $json = $this->_helper->json->encodeJson($data);
|
|
|
- }
|
|
|
-}
|
|
|
-]]></programlisting>
|
|
|
-
|
|
|
- <note>
|
|
|
- <title>レイアウトの維持</title>
|
|
|
-
|
|
|
- <para>
|
|
|
- <acronym>JSON</acronym> レスポンスでレイアウト機能を使用したい場合
|
|
|
- (いくつかの <acronym>JSON</acronym> レスポンスをひとつにまとめて処理するなど)
|
|
|
- のために、<acronym>JSON</acronym> ヘルパーの各メソッドには
|
|
|
- 2 番目の引数が用意されています。
|
|
|
- この引数はオプションのフラグで、レイアウト機能を有効あるいは無効にします。
|
|
|
- <constant>TRUE</constant> を渡すと、レイアウト機能を有効なままにします。
|
|
|
- </para>
|
|
|
-
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
-$this->_helper->json($data, true);
|
|
|
-]]></programlisting>
|
|
|
-
|
|
|
- <para>
|
|
|
- オプションで、2 番目の引数に配列を渡すことができます。
|
|
|
- この配列には、<emphasis>keepLayouts</emphasis>
|
|
|
- のオプションを含むさまざまなオプションを指定できます。
|
|
|
- </para>
|
|
|
-
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
-$this->_helper->json($data, array('keepLayouts' => true);
|
|
|
-]]></programlisting>
|
|
|
- </note>
|
|
|
-
|
|
|
- <note>
|
|
|
- <title>Zend_Json_Expr を使用したエンコードの有効化</title>
|
|
|
-
|
|
|
- <para>
|
|
|
- <methodname>Zend_Json::encode()</methodname> は、ネイティブ <acronym>JSON</acronym> 式を
|
|
|
- <classname>Zend_Json_Expr</classname> オブジェクトを使用してエンコードできます。
|
|
|
- このオプションはデフォルトでは無効になっています。
|
|
|
- 有効にするには、<emphasis>enableJsonExprFinder</emphasis>
|
|
|
- オプションに <constant>TRUE</constant> を設定します。
|
|
|
- </para>
|
|
|
-
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
-$this->_helper->json($data, array('enableJsonExprFinder' => true);
|
|
|
-]]></programlisting>
|
|
|
-
|
|
|
- <para>
|
|
|
- これを行いたい場合は、2 番目の引数に必ず配列を渡さなければなりません。
|
|
|
- また、たとえば <emphasis>keepLayouts</emphasis> のような他のオプションと組み合わせることもできます。
|
|
|
- これらすべてのオプションが <methodname>Zend_Json::encode()</methodname> に渡されます。
|
|
|
- </para>
|
|
|
-
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
-$this->_helper->json($data, array(
|
|
|
- 'enableJsonExprFinder' => true,
|
|
|
- 'keepLayouts' => true,
|
|
|
-));
|
|
|
-]]></programlisting>
|
|
|
- </note>
|
|
|
-</sect3>
|
|
|
-<!--
|
|
|
-vim:se ts=4 sw=4 et:
|
|
|
--->
|