9

通常、エンコードされたjsonオブジェクトを応答の本文に追加しますが、ContextSwitchアクションヘルパーを使用する必要がある状況になりました。

3つの異なる応答コンテキストを必要とするZend_Formがあります。

  1. html-レイアウト内で通常のhtmlとしてフォームをレンダリングします
  2. html- partial-フォームだけをhtmlとしてレンダリングするajax「get」リクエスト。
  3. json-フォーム検証エラーメッセージを返すajax「post」リクエスト。

コンテキストごとに、3つのビュースクリプトがあります。2つのhtmlコンテキストで同じビュースクリプトを使用できますが、これが可能かどうかはわかりません。

  • form.phtml
  • form.html.phtml
  • form.json.phtml

htmlコンテキストビューは正常に機能しますが、jsonビューは取得されていません。デフォルトのjsonpostコールバック動作をオーバーライドする、またはカスタムエンコードされたオブジェクトを応答本文に渡すための最良の方法は何ですか?

4

2 に答える 2

6

個人的には、「表示」を使用してJSONコンテンツを生成することはありません。私init()の中には、次のようなものがあります。

$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->setAutoJsonSerialization(false)
    ->addActionContext('index', array('html', 'json'))
    ->initContext();

そして私の中でindexAction()

if ( true === $this->isAjaxJson() ) {
    $this->_helper->json(
        array(
            'response' => $myResponse,
            'message' => $myMesage
        )
    );
    return;
}

この助けを願っています。

于 2011-03-10T09:53:37.627 に答える
0

これは役立つかもしれません: $this->_helper->json->sendJson($data); 一方、

$data=array('data1'=>'val1','data2'=>'val2');

于 2013-03-14T11:52:59.350 に答える