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

发布于 2024-10-20 17:16:28 字数 571 浏览 7 评论 0原文

我通常将编码的 json 对象附加到响应正文,但是现在我遇到了需要使用 ContextSwitch 操作助手的情况。

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

  1. html - 将表单呈现为普通 html 在布局内。
  2. html-partial - 渲染的 ajax“get”请求 只是 html 形式。
  3. json - 返回的 ajax“post”请求 任何表单验证错误消息。

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

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

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

I normally append an encoded json object to the response body, however I now have a situation that warrants using the ContextSwitch action helper.

I have a Zend_Form that requires three different response contexts:

  1. html - Render the form as normal html
    within a layout.
  2. html-partial - An ajax "get" request that renders
    just the form as html.
  3. json - An ajax "post" request that returns
    any form valiation error messages.

For each context I have 3 view scripts. Although the two html contexts could use the same view script, but I haven't figured out if this is possible.

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

The html context views work okay, but the json view is not being picked up. What is the best method to override the default json post callback behaviour or pass a custom encoded object to the response body?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人疚 2024-10-27 17:16:28

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

希望有所帮助。

Personally, I don't use "View" to generate JSON content.
In my init(), I have something like this:

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

And In my indexAction():

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

Hope this help.

葬心 2024-10-27 17:16:28

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

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

this may help :
$this->_helper->json->sendJson($data);
while,

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文