CakePHP autorender没有停止默认视图

时间:2013-03-27 15:52:38

标签: php cakephp cakephp-1.3

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

在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跟踪下面呈现。

有关如何完全禁用渲染默认视图并仅显示移动设备的想法吗?

2 个答案:

答案 0 :(得分:18)

如果CakePHP为'false',则会省略选项;您需要像这样更改代码:

<?php

$this->autoRender = false;

?>

这应该停止渲染视图;

答案 1 :(得分:4)

如果您想关闭特定视图的自动退出程序,请添加

$this->autoRender = false;

在特定方法中而不是在app控制器中