0

我不知道为什么这不起作用!我在 AppController 中的 beforeFilter() 函数中有以下代码,我使用的是 CakePHP 2.2.2,我开始使用 '$this->RequestHandler->isMobile()' 但这给了我一个错误。查看 CakePHP 网站,我发现他们已将调用更改为我现在在下面使用的调用。

但是这不起作用,当我在 iPhone 上查看我的网站时,它应该只回显在视图文件上设置的测试消息,但它仍然会转到整个网站的 default.cpt 文件,我认为应该停止自动渲染命令?

那么我做错了什么或者我没有做我应该做的事情?

  if($this->request->is('mobile')) {
      $this->isMobile = true;
      $this->set('isMobile', true );
      $this->autoRender = false;
      $this->render('../mobile/test');
   }

非常感谢格伦。

4

3 回答 3

3

你有没有尝试过这样的事情?无法测试它,但它看起来应该可以工作。

public $components = array('RequestHandler');

public function beforeFilter() {
    if ($this->RequestHandler->is('mobile')) {
        // Execute code only if client accepts is mobile
    } else {
        // Execute Normal Code
    }
}
于 2012-10-01T14:56:05.717 回答
2

按照编写良好的文档,您可以执行以下操作:

if ($this->request->is('mobile')) {
    $this->isMobile = true;
    ...
}

http://book.cakephp.org/2.0/en/controllers/request-response.html#inspecting-the-request

这将是新的 2.x 风格。requesthandler 组件在这里只是一个包装器,可能有一天会弃用包装器访问。

于 2012-10-01T15:23:22.180 回答
0

对于 cake php 2.x,在控制器顶部使用它

public $components = array('RequestHandler');

并在任何动作中使用这个

 if ($this->RequestHandler->isMobile()) {

// 你的条件在这里

}

于 2014-03-27T12:19:03.013 回答