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

gaw*_*ron 9 php json zend-framework helper context-switch

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

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

  1. html - 在布局中将表单渲染为普通html.
  2. html-partial - 一个ajax"get"请求,只将表单呈现为html.
  3. json - 一个返回任何表单valiation错误消息的ajax"post"请求.

对于每个上下文,我有3个视图脚本.虽然两个html上下文可以使用相同的视图脚本,但我还没弄清楚这是否可行.

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

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

Aka*_*run 6

就个人而言,我不使用"View"来生成JSON内容.在我init(),我有这样的事情:

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

在我的indexAction():

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

希望这有帮助.