Как получить доступ к модели для запроса базы данных из вспомогательной функции?

Я пытаюсь создать аутентификацию для моего веб-сайта php. Я использую фреймворк codeigniter. Мне нужно будет подтвердить сеанс на всех страницах моего веб-сайта. Поэтому, чтобы избежать повторения кода, я планирую сделать это во вспомогательной функции. Теперь, когда мои учетные данные пользователя находятся в моей базе данных, я хотел бы получить доступ к модели для запроса базы данных из вспомогательной функции. В классе контроллера я бы сделал это, используя

$this->load->model('user_model');

Пожалуйста, дайте мне знать его эквивалент в вспомогательном файле. Любые предложения в подходе также приветствуются. Заранее спасибо.


person Vinod    schedule 04.01.2010    source источник


Ответы (2)


Вы не сможете использовать $this для доступа к вашему экземпляру CI в помощнике, но у CI есть способ сделать это —

Во-первых, вам нужна ссылка на ваш экземпляр CI:

$CI =& get_instance();

Затем, если вам нужно загрузить модель, вы можете сделать это так:

$CI->load->model('model_name');

И, наконец, вызовите любую функцию в вашей модели следующим образом:

$CI->model_name->function_name();

По сути, используйте $CI вместо $this. Надеюсь, это поможет.

person thegibson    schedule 04.01.2010

Это не так много повторений кода. Я бы предложил такой подход:

function __construct()
{
    parent::Controller();

    if ($this->auth->is_logged_in() !== TRUE) // "auth" is the authentication library
    {
        redirect('login');
    }
}
person Cinnamon    schedule 04.01.2010