我需要在控制器中检测移动状况。我在我的控制器中尝试过以下代码。
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
}
然后我在索引方法
中写了下面的代码if ($this->RequestHandler->is('mobile'))
{
//condition 1
}else {
//condition 2
}
我收到错误
Error: Call to undefined method Cake\Controller\Component\RequestHandlerComponent::is()
如何在控制器中检测移动?
答案 0 :(得分:8)
自all the request handler does is proxy the request object以来,请求处理程序不是必需的:
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 {
...
}
}
答案 1 :(得分:4)
我认为那将是
$this->RequestHandler->isMobile()
答案 2 :(得分:0)
CakePHP 3 使用 mobiledetect/mobiledetectlib 库
在 bootstrap.php 中添加了 2 种检测类型 'mobile', 'tablet'
你可以使用它:
if ($this->request->is('mobile')) {
// ...
}
elseif ($this->request->is('tablet')) {
// ...
}
else {
// ...
}