【发布时间】:2015-12-26 23:12:47
【问题描述】:
默认情况下,SocialENGine 会在每个控制器操作结束时自动呈现视图。如果您使用的是布局,它也会呈现它。这对于普通网页来说很好,但是当您发送 AJAX 响应时,您不需要所有这些。您如何防止 SocialEngine 在逐个动作的基础上自动渲染?使用 ZendFramework,您可以这样做:
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(TRUE);
您可以使用一些不错的助手,例如:
$this->_helper->json($data);
... 它将对您的 $data 进行 json_encode,将其与 JSON 标头一起输出并最终死掉,因此从操作返回干净的 JSON 而无需视图渲染,这几乎正是我想要的。
然而,这些解决方案在 SocialEngine 中都不起作用—— $this->_helper 和 $this->view->_helper 似乎总是一个空数组。而 return $this->setNoRender() 只会阻止当前元素渲染,而不是整个页面。
【问题讨论】:
标签: json ajax layout socialengine