如何根据useragent加载控制器?

时间:2016-12-19 11:55:51

标签: php codeigniter model-view-controller routes

我有两个不同的移动和桌面网站(由于它们之间存在很大的差异,我无法使其响应,因此无法加载不同的视图),并且它们的网址相同。我已经在Codeigniter中拥有移动网站,我需要将其用于桌面版。

  

他们是否可以在路由器中加载不同的控制器   基于useragent,或任何其他方式来解决这个问题。

我已尝试在路由规则之前加载useragent库,但我收到错误。

这是我在routes.php中试过的:

$this->load->library('user_agent');
$this->load->helper('url');
if ($this->agent->is_mobile())
{
    $device = "";
}
else
{
    $device = "desktop/";
}

错误:

  

遇到PHP错误       严重性:注意       消息:未定义属性:CI_Router :: $ load       文件名:config / routes.php       行号:52       回溯:       文件:/var/www/html/abc.com/application/config/routes.php       行:52       功能:_error_handler       文件:/var/www/html/buzz.in/index.php       行:315       功能:require_once

2 个答案:

答案 0 :(得分:1)

正如你可以使用的那样是使用重映射函数,或使用baseController,但我会选择CodeIgniter钩子。

接下来我想知道为什么移动设备会以不同于桌面的方式处理数据?根据我的经验,我只更改视图,而不是功能,但无论如何检查

https://www.codeigniter.com/user_guide/general/hooks.html

答案 1 :(得分:0)

您可以在检查用户代理后使用_remap()功能,并且在两种情况下(移动/桌面)都会保持URL相同。

_remap() documentation

或者您可以按照@ kishor10d ...

的说明在BaseController中查看它