【问题标题】:CakePHP autorender not stopping default viewCakePHP autorender 不停止默认视图
【发布时间】:2013-03-27 15:52:38
【问题描述】:

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

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

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

【问题讨论】:

  • 你能分享截图吗?
  • 试试 autoLayout = false
  • 这不起作用 - 仍然呈现“默认”视图,但出于某种原因从页面中删除了 css。
  • 在您的控制器中,您将$this->autoRender 设置为NULL,而不是false

标签: php cakephp cakephp-1.3


【解决方案1】:

如果选项为“假”,CakePHP 将忽略它们;您需要像这样更改代码:

<?php

$this->autoRender = false;

?>

这应该会阻止视图呈现;

【讨论】:

    【解决方案2】:

    如果您想为特定视图关闭自动渲染,请添加

    $this->autoRender = false;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 2011-08-08
      相关资源
      最近更新 更多