2013-03-27 55 views
3

我想在一个控制器中运行一个方法,该控制器在正常浏览器上呈现默认视图,但在请求来自移动设备时呈现移动视图。CakePHP autorender不停止默认视图

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

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

+0

您能够共享一个屏幕截图? – uzyn 2013-03-27 16:00:10

+0

[Screenshot here](http://cl.ly/image/0y3f23023M0B) – tbthorpe 2013-03-27 16:04:38

+0

尝试autoLayout = false – gaRex 2013-03-27 17:00:18

回答

15

如果CakePHP为'false',则省略选项;你需要像这样改变你的代码:

<?php 

$this->autoRender = false; 

?> 

这应该停止渲染视图;

2

如果你想autorender关闭特定视图,然后在特定的方法添加

$this->autoRender = false; 

而不是在应用程序控制器