2013-09-30 2 views
1

Я хочу использовать те же модели и контроллеры, которые у меня есть для нашего веб-сайта, а затем создать два отдельных «представления», папки в каталоге приложения, один для веб-версии и один для мобильной версии. Затем загрузите представление рабочего стола, если на веб-сайте будет доступен доступ с рабочего стола и мобильных представлений в другом случае. Как бы то ни было, если это можно сделать и как это сделать.Использование отдельной папки Views для мобильных устройств для существующего веб-сайта, созданного в CodeIgniter, с использованием тех же контроллеров и моделей

EDIT: это функция, которая назначает путь Просмотр папки в CodeIgniter/системы/loader.php:

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'; 
} 

Является ли это путь? -

ответ

1

This link может помочь вам определить тип устройства, к которому осуществляется доступ к вашему веб-приложению. Создайте библиотеку для нее и включите ее в конструктор класса вашего контроллера.

Теперь вы можете изменить представление в следующем виде:

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. 
+0

Спасибо за быстрый ответ, означает ли это, что $ this-> load-> view ('example') указывает на разные файлы в зависимости от устройства (мобильного или другого)? означает, что мне не придется менять код, который я уже использую для загрузки просмотров? –

+0

Точно. Вам просто нужно сделать аналогичную схему для мобильных и настольных устройств. Все функциональные возможности останутся прежними. –

+0

Большое спасибо, я начал над этим работать. –

0

Или вы можете использовать UserAgent предоставленных Codigniter http://ellislab.com/codeigniter/user-guide/libraries/user_agent.html

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)); 
    } 
} 
+0

любезно см. Мой первый пост, я отредактировал его после посещения предоставленной вами ссылки. –

+0

вы можете создать свою собственную функцию просмотра в Loader.php, где вы можете проверить, является ли она мобильной или нет, будет применяться ко всему приложению –

+0

да, я сделал это, но это дает мне следующую ошибку: Неопределенное свойство: CI_Loader :: $ agent; даже если я загрузил библиотеку user_agent в autoload. где я должен включить это: $ this-> load-> library ('user_agent'); –