CakePHP autorender没有停止默认视图


CakePHP autorender not stopping default view

我正试图在控制器中运行一个方法,该方法在普通浏览器上呈现默认视图,但在请求来自移动设备时呈现移动视图。

在app_controller.php 中

function beforeFilter() { 
    if ($this->RequestHandler->isMobile()) {
        $this->is_mobile = true;
        $this->set('is_mobile', true );
        $this->autoRender = false;
    }
}

在控制器中:

function home(){    
    ...bunch of data grabbing stuff...
    if ($this->is_mobile){
        $this->autoRender = NULL;
        $this->layout = 'empty';
        $this->render('/mobile/home');
    } else {
        $this->layout = 'default';
    }
}

当我在浏览器上点击它(用户代理切换到移动设备(时,它会呈现正确的移动/主视图文件,但它也会在下面呈现正常的非移动视图文件。打开调试,除了第二个"正常"视图文件在移动视图的mysql跟踪下面呈现之外,没有什么异常。

关于如何完全禁用默认视图进行渲染并仅显示移动设备,有什么想法吗?

CakePHP会在选项为"false"时省略这些选项;你需要这样更改你的代码:

<?php
$this->autoRender = false;
?>

这应该会阻止视图的渲染;

如果您想关闭特定视图的自动呈现,则添加

$this->autoRender = false;

在特定的方法中,而不是在应用程序控制器中