Onu*_*ker 4 php mobile redirect routes codeigniter
我想要做的是在CodeIgniter中创建我的网站的移动版本.
我想将我的完整网站重定向到m.example.com
在视图和模型中,控制器都不会发生变化.两者都是一样的.
我不想更改我的.htaccess文件.任何可能的解决方案?
用户代理类具有一个功能;
$this->agent->is_mobile();
Run Code Online (Sandbox Code Playgroud)
您可以在基本控制器的构造中使用它来测试是否移动.
您可以只加载不同的视图文件夹,而不是在整个地方重写代码.实质上,只要你使用$ this-> load-> view("xxx"),你就可以让CodeIgniter从另一个文件夹中加载一个具有相同名称的不同视图.首先,在名为/ mobile的视图文件夹中创建一个新文件夹,只创建具有相同命名约定的视图,并通过扩展Loader.php类来相应地加载视图.
无论您是在进行响应式设计还是要创建一个寻找移动版网站的iPhone应用程序,有点像facebook所做的那样,那么您只需覆盖核心文件夹中的Loader类.在您的应用程序/核心文件夹中,创建一个MY_Loader.php并将其放入该文件中.
我看起来如下
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Loader extends CI_Loader
{
//overides existing view function
function view($view, $vars = array(), $return = FALSE)
{
$CI =& get_instance();
$CI->load->library("user_agent");
if($CI->agent->is_mobile()){
$view = 'mobile/'.$view;
}
return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
}
}
?>
Run Code Online (Sandbox Code Playgroud)
在我看来,响应式网页设计是一个混乱,但这仍然很好地为您分离代码,同时仍然能够同时使用您的控制器和模型.
希望这可以帮助.这就是我要做的方式:)!