使用Zend Action Helper ContextSwitch创建自定义JSON响应对象

时间:2011-03-08 11:04:15

标签: php json zend-framework helper context-switch

我通常会将一个编码的json对象附加到响应主体,但是我现在有一种情况需要使用ContextSwitch动作帮助器。

我有一个需要三种不同响应上下文的Zend_Form:

  1. html - 将表单呈现为普通html 在布局中。
  2. html-partial - 呈现的ajax“get”请求 只是形式为html。
  3. json - 返回的ajax“post”请求 任何形式的valiation错误消息。
  4. 对于每个上下文,我有3个视图脚本。虽然这两个html上下文可以使用相同的视图脚本,但我还没弄清楚这是否可行。

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

    html上下文视图可以正常工作,但json视图没有被选中。覆盖默认json post回调行为或将自定义编码对象传递给响应主体的最佳方法是什么?

2 个答案:

答案 0 :(得分:6)

就个人而言,我不使用“View”来生成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;
}

希望得到这个帮助。

答案 1 :(得分:0)

这可能会有所帮助: $this->_helper->json->sendJson($data); 同时,

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