Как загрузить мои модели в файл ловушки codeigniter? - PullRequest
0 голосов
/ 30 июля 2010

Вот моя проблема. Я создаю приложение, которое требует фильтров. Я получил работающую систему фильтров, и я даже могу точно определить метод, к которому я хочу получить доступ в данный момент. Проблема в том, что я не могу получить доступ к ядру CI из файла фильтра. Я искал в Интернете, и хотя я нашел некоторые предлагаемые решения, такие как «Погружение в CI», они не рекомендуются, поскольку они могут вызывать нестабильные PHP-приложения.

Пример фильтра в моем приложении такой, как написано ниже

class Trust_filter extends Filter {
  function before() {
    $this -> ci = &get_instance();
    if ($this -> ci -> auth -> is_user_active()) {
      $this -> ci -> load -> model("trust_model", "trustmanager");
      if ($this -> trustmanager -> verify()) {
        echo "##090##";
      }
    }
  }
}

Приведенный выше код не работает, потому что объект CI не является объектом. Я не могу получить экземпляр, и я провел всю ночь безрезультатно. Я использую CodeIgniter 1.7.1. Любая помощь будет оценена.

Редактировать: я нашел ответ на вопрос. Я расширил систему фильтров, чтобы она работала после создания конструктора, чтобы обеспечить доступ к суперобъекту CI. Мой код тоже работает отлично. спасибо всем, но я все еще заинтересован в ваших решениях.

Ответы [ 2 ]

3 голосов
/ 05 июня 2012
$ci=&get_instance();

$ci->load->model("auth");

$ci->auth->login();

Этот тип вы можете получить или получить доступ к модели в файлах хуков.

1 голос
/ 30 июля 2010

В codeigniter много странностей в том, когда что-то загружается и создается.Что касается хуков, часто вы обнаружите, что библиотеки / хелперы / конфиг / модели не загружаются до тех пор, пока постконтроллер не создаст это во многих случаях (например, в этом).Конструкция контроллера.В этот момент вы определенно сможете получить доступ к экземпляру ci, но я не уверен насчет доступа к моделям.

Также обратите внимание, что модели действительно должны загружаться / использоваться только из внутренних контроллеров (одна из причинони могут не работать в ловушках precontroller).Codeigniter и многие программисты обходят это, создавая моделирование поведения в библиотеках (например, в библиотеке сеансов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...