2013-07-24 6 views
1

можно разместить модель и просматривать папки структуры MVC из CodeIgniter в другое место, независимо от регулярного путиотделяя папку Модель, вид папки и папку контроллера в CodeIgniter

application/views 
application/models 

в другое место, позволяет сказать,

abc/views 
pqr/models 

вне папки проекта. если возможно, то как я могу это достичь.

спасибо заранее

+0

Попробуйте найти 'HMVC Codeigniter' – Red

ответ

2

Там нет функции для настройки models и views пути в CodeIgniter стабильных версиях (в то время как в CI 3.x вы можете изменить view путь, а также application и system).

Но вы можете загрузить свои файлы за пределами типовых views и models папок.

Путь к файлу относительный. Таким образом, вы можете использовать ../, чтобы пойти один UP уровень в пути.

Например, если abc находится рядом с application, вы должны использовать ../../abc, чтобы добраться до этой папки.

Посмотрите на примере ниже:

Модель:

class Model_name extends CI_Model { 

    public function baz($value='') 
    { 
     return $value; 
    } 

} 

Контроллер:

class Foo extends CI_Controller { 

    public function bar() 
    { 
     $this->load->model('../../pqr/models/model_name'); 

     $data['var'] = $this->model_name->baz('Yes It Works!'); 

     $this->load->view('../../abc/views/view_name', $data); 
    } 

} 

Вид:

<?php echo $var; ?> 

Вот структура папок выборки:

application 
system 
pqr 
    /models 
      /model_name.php 
abc 
    /views 
     /view_name.php 

Как Side-Note: Убедитесь, что прямое время доступ к pqr или abc каталогов ограничено.добавьте в них файл .htaccess с содержанием Deny from all.

+0

это решение является правильным, если размещенных на одном сервере. предположим, что разработчик создает контроллер, например, '192.168.1.2/test /', и ist соответствующее представление выполняется, например, '192.168.1.3/xyz', что я должен делать для такого случая. возможно сейчас – dhpratik

+0

Я настоятельно рекомендую вам изменить свою стратегию, посмотрите [здесь] (http://stackoverflow.com/questions/2752783/including-php-file-from-another-server-with-php) для получения дополнительной информации. –

+0

У меня проблема с уром. но я планирую реализовать это только для этапа разработки. Я попытался использовать метод, указанный в ссылке, которую вы дали для редактирования файла php.ini. все еще не работает. Я вызываю следующий путь: '$ this-> load-> view ('http://192.168.1.3/t2/welcome_message');' – dhpratik

0

Я не уверен, что вы можете перемещать виды и модели в разных местах, но вы можете изменить расположение папки приложения к месту вашего выбора.

Вы можете переместить каталог своего приложения в другое место, а затем открыть файл index.php и установить переменные $ system_folder и $ application_folder с новыми значениями пути, предпочтительно с полным путем, например. '/ WWW/MyUser/система.

Ссылки: http://ellislab.com/codeigniter/user-guide/installation/index.html

Надеется, что это полезно.

1

Для настройки модели и представления вне папки «приложения», выполните следующие простые шаги,

  • Создать My_Loader.php файл в «приложения/ядра» каталога
  • Скопируйте следующий код в обычае My_Loader.php

    class MY_Loader extends CI_Loader { 
    
    function mymodel($model, $folder = '',$vars = array(), $return = FALSE) { 
    
        array_push($this->_ci_model_paths, ""); 
        parent::model($model); 
    } 
    
    
    function myview($folder, $view, $vars = array(), $return = FALSE) { 
         $this->_ci_view_paths = array_merge($this->_ci_view_paths, array(APPPATH . '../' . $folder . '/' => TRUE)); 
         return $this->_ci_load(array(
           '_ci_view' => $view, 
           '_ci_vars' => $this->_ci_object_to_array($vars), 
           '_ci_return' => $return 
         )); 
    } 
    
    • Сохраните файл и в контроллере, вызова и загрузить модель (которая находится вне папки приложения), как:

    $this->load->mymodel('folder/model');

и для зрения,

$this->load->myview('views','view_dir/view-php-file', $data); 
Смежные вопросы