CakePHP移动检测不起作用?

时间:2012-10-01 14:31:33

标签: cakephp mobile

我不确定为什么这不起作用!我在我的AppController中的beforeFilter()函数中有下面的代码,我正在使用CakePHP 2.2.2,我开始使用'$ this-> RequestHandler-> isMobile()'但这给了我一个错误。看看CakePHP网站,我发现他们已经改变了我现在使用的电话。

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

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

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

非常感谢格伦。

3 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分: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组件只是一个包装器,可能有一天会弃用包装器访问。

答案 2 :(得分:0)

for cake php 2.x在你的控制器顶部使用它

public $components = array('RequestHandler');

并在任何动作中使用此

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

//你的条件在这里

}