JSON ヘルパー
JSON を返すビューを作成する際に大事なのは、
適切なレスポンスヘッダを設定することです。
JSON ビューヘルパーは、まさにその作業を行います。
さらに、デフォルトでレイアウト機能を無効にします (現在有効である場合)。
JSON レスポンスでは通常レイアウト機能は使わないからです。
JSON ヘルパーは次のようなヘッダを設定します。
たいていの AJAX ライブラリは、
レスポンスでこのヘッダを見つけると適切に処理してくれます。
JSON ヘルパーの使用法は、このように非常に単純です。
json($this->data) ?>
]]>
レイアウトの維持、およびZend_Json_Expr によるエンコードの有効化
JSON ヘルパーの各メソッドには、オプションで 2 番目の引数を指定できます。
この 2 番目の引数は、レイアウト機能の有効/無効を指定する boolean フラグか
あるいは Zend_Json::encode()
に渡して内部的なデータのエンコードに使用するオプションの配列となります。
レイアウトを維持するには、2 番目のパラメータを
TRUE としなければなりません。
2 番目のパラメータを配列ににする場合にレイアウトを維持するには、配列に
keepLayouts というキーを含め、その値を
TRUE にします。
json($this->data, true);
// あるいは、キー "keepLayouts" に true を指定します
echo $this->json($this->data, array('keepLayouts' => true));
]]>
Zend_Json::encode() は、ネイティブ JSON 式を
Zend_Json_Expr オブジェクトを使用してエンコードできます。
このオプションはデフォルトでは無効になっています。
有効にするには、enableJsonExprFinder
オプションに TRUE を設定します。
json($this->data, array(
'enableJsonExprFinder' => true,
'keepLayouts' => true,
)) ?>
]]>
Sending pre-encoded JSON
By default, the JSON helper will JSON-encode the
data provided to the helper's first parameter. If you wish to pass
in data which has already been encoded into JSON,
the third parameter needs to be set to boolean FALSE.
When the second parameter is an array, disabling JSON
encoding can be achived by including a encodeData
key with the value of boolean FALSE:
json($this->data, false, false);
// Or boolean false as "encodeData" key:
echo $this->json($this->data, array('encodeData' => false));
]]>