Cakephp 3:如何通过requestHandler检测控制器中的移动的?

amrnrhlw  于 2022-11-11  发布在  PHP
关注(0)|答案(3)|浏览(124)

我需要在控制器中检测移动的的条件。我已经在我的控制器中尝试了下面的代码。

public function initialize()
{
    parent::initialize();
    $this->loadComponent('RequestHandler');
}

然后我用index方法写了下面的代码

if ($this->RequestHandler->is('mobile')) 
{     
  //condition 1 
}else {
 //condition 2 
}

这里我得到了错误

Error: Call to undefined method Cake\Controller\Component\RequestHandlerComponent::is()

移动的如何在控制器中检测?

w1e3prcc

w1e3prcc1#

请求处理程序不是必需的,因为请求处理程序所做的只是代理请求对象:

public function isMobile()
{
    $request = $this->request;
    return $request->is('mobile') || $this->accepts('wap');
}

控制器还可以直接访问请求对象,因此问题中的代码可以重写为:

/* Not necessary
public function initialize()
{
    parent::initialize();
} 

* /

public function example()
{
    if ($this->request->is('mobile')) {
        ...
    } else {
        ...
    }
}
q9rjltbz

q9rjltbz2#

我想那将是

$this->RequestHandler->isMobile()
vddsk6oq

vddsk6oq3#

CakePHP 3使用移动检测库
在bootstrap.php中添加了2种类型的检测“移动”,“平板”
您可以使用它:

if ($this->request->is('mobile')) {
       // ...
    }
    elseif ($this->request->is('tablet')) {
       // ...
    }
    else {
       // ...
    }

相关问题