1

我想为我们的网站使用相同的模型和控制器,然后在应用程序目录中创建两个单独的“视图”文件夹,一个用于网络版本,一个用于移动版本。如果网站是,则加载桌面视图在另一种情况下从桌面和移动视图访问。如果可以完成以及如何完成,请指导我。

编辑:这是在 Codeigniter/system/loader.php 中分配 View 文件夹路径的函数:

function __construct() { 
$this->_ci_view_path = APPPATH.'views/'; 
$this->_ci_ob_level = ob_get_level(); 
$this->_ci_library_paths = array(APPPATH, BASEPATH); 
$this->_ci_helper_paths = array(APPPATH, BASEPATH); 
$this->_ci_model_paths =     array(APPPATH); 
log_message('debug', "Loader Class Initialized"); 
}

所以如果我在这里应用这个检查:

if($this->agent->mobile()){ 
$this->_ci_view_path = APPPATH.'views/mobile_view';
}

这是要走的路吗?–

4

2 回答 2

1

此链接可能会帮助您识别正在访问您的 Web 应用程序的设备类型。为其创建一个库并将其包含在控制器类的构造函数中。

现在您可以通过以下方式更改视图:

if ($detect->isMobile()) {
         $view_folder = 'views/mobile/';
}
else{
         $view_folder = 'views/normal/';
}
$this->load->view($view_folder.index, $data); //$data is the same variable that you are going to use into your views.
于 2013-09-30T07:18:08.850 回答
0

或者您可以使用 Codigniter http://ellislab.com/codeigniter/user-guide/libraries/user_agent.html提供的 userAgent

EDITED Loader.php 创建自定义视图函数,如下所示

public function my_view($view, $vars = array(), $return = FALSE)
{
    $CI =& get_instance();
    $CI->load->library('user_agent');
    if ($CI->agent->is_mobile())
    {
        // mobile view code goes here
        //return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
    }
    else
    {
        // browser code goes here
        //return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
    }
}
于 2013-09-30T07:47:51.867 回答