首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止socialengine呈现视图(用于AJAX)

阻止socialengine呈现视图(用于AJAX)
EN

Stack Overflow用户
提问于 2015-09-29 20:52:45
回答 2查看 284关注 0票数 1

默认情况下,SocialENgine会在每个控制器操作结束时自动呈现一个视图。如果你使用的是一个布局,它也会渲染它。这对于普通的Web页面来说很好,但是当您发送AJAX响应时,您并不想要所有这些内容。如何防止SocialEngine在逐个操作的基础上自动呈现?使用ZendFramework,您可以执行以下操作:

代码语言:javascript
复制
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(TRUE);

您还可以访问一些很好的帮助程序,比如:

代码语言:javascript
复制
$this->_helper->json($data);

..。它将json_encode你的$data,输出它与JSON头,最后死亡,所以得到干净的JSON从动作返回,没有视图呈现,这是我想要的。

然而,这些解决方案都不能在SocialEngine中工作-- $this->_helper似乎总是一个空数组,$this->view->_helper也是如此。而return $this->setNoRender()只阻止当前元素呈现,而不是整个页面。

EN

回答 2

Stack Overflow用户

发布于 2016-08-18 18:33:17

在一些默认的小部件中,我发现了这个函数调用,它完全抑制了小部件的呈现:

代码语言:javascript
复制
return $this->setNoRender();

它是用Engine_Content_Widget_Abstract实现的,如果你感兴趣的话。

最好的,本尼。

票数 2
EN

Stack Overflow用户

发布于 2018-10-10 12:51:37

我在小部件控制器的上下文中遇到了这个问题。

我访问json()帮助器的解决方案是创建并实例化一个扩展抽象Core_Controller_Action_Standard的具体类,并公开一个包装器方法以在小部件的Controller.php文件中发送json:

代码语言:javascript
复制
class Widget_MyWidgetAjaxController extends Core_Controller_Action_Standard
{
    public function sendjson($data) {
        return $this->_helper->json($data);
    }
}

这在Widget的控制器中使用,如下所示:

代码语言:javascript
复制
class Widget_MyWidgetController extends Engine_Content_Widget_Abstract
{
    public function indexAction() 
    {
        // This is an ajax request to our widget controller
        if ($this->getRequest() && $this->getRequest()->isPost()) {

            // Do whatever processing you need 
            // [...]
            $response_data=array('hello','world');

            $ajax = new Widget_TrackablesAjaxController(
                $this->getRequest(), 
                new Zend_Controller_Response_Http
            );

            return $ajax->sendjson($response_data);
        }
    }
}

我不必显式地使用disableLayout()或setNoRender()。通过_helper->json()进行响应就足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32844541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档