Как получить доступ к библиотеке в CI HMVC?

Мой текущий контроллер и библиотека перечислены ниже...

>application/
 - config/
 - controllers/
 - ...
 - models/
 - modules/
   - module1/
     - controllers/
       - Test_cont.php
     - models/
     - views/
     - libraries
       - Test_lib.php
 - third_party/
 - views/
 - ...(other files & folders)

'modules / module1 / controllers / Test_cont.php' это:

class Test_cont extends MY_Controller
{
  function __construct(){
    parent::__construct();
  }

  function index(){
    $this->load->library('Test_lib');
    $this->Test_lib->doSomething();
  }
}

Файл 'modules / module1 / library /Test_lib.php':

class Test_lib
{
  function __construct(){
    echo 'library loaded <br>';
  }

  function doSomething(){
    echo 'it works!';
  }
}

когда я захожу на URL ' http://localhost/codeigniter-3.1.3/module1/test_cont', он говорит:

---------------------------------------------------
| An Error Was Encountered                        |
---------------------------------------------------
| Unable to load the requested class: Test        |
---------------------------------------------------

Я надеюсь, что смогу помочь вам понять мою проблему, как решить эту проблему?... (заранее спасибо)

4 ответа

Решение

Если вы находитесь в одном модуле, вы можете загрузить библиотеку следующим образом:

function index(){
   $this->load->library('Test_lib');
   $this->test_lib->doSomething();
}

но если вы находитесь в другом модуле и хотите загрузить библиотеку из другого модуля, то:

function index(){
   $this->load->library('module_name/Test_lib');
   $this->test_lib->doSomething();
}

Имена библиотек не чувствительны к регистру. Экземпляры объекта всегда будут в нижнем регистре.

смотрите создание библиотек

function index(){
   $this->load->library('Test_lib');
   $this->test_lib->doSomething();
}

В hmvc необходимо указать имя модуля при загрузке библиотеки, модели и т. Д.

function index(){
   // You don't need to use upper case when loading library only class and filename

   $this->load->library('module-name/test_lib');
   $this->test_lib->doSomething();

   // Loading model hmvc

   $this->load->model('module-name/test_model');
   $this->test_model->doSomething();
}

Контроллер, если нет приложения /core/MY_Controller.php, использовать MX_Controller

Имя файла Test_cont.php

class Test_cont extends MY_Controller
{

}

Если вам нужно использовать MY_controller, убедитесь, что вы делаете это в application/core/MY_Controller.php

<?php

class MY_Controller extends MX_Controller {

}

Наконец, я обнаружил, что внутри скрипта произошла ошибка, поэтому у меня возникли проблемы с загрузкой библиотеки, но моя библиотека загрузилась:

$this->load->library('Test_lib');
Другие вопросы по тегам