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

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

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

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

Ответы [ 2 ]

20 голосов
/ 04 января 2010

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

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

$CI =& get_instance();

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

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

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

$CI->model_name->function_name();

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

1 голос
/ 04 января 2010

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

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

    if ($this->auth->is_logged_in() !== TRUE) // "auth" is the authentication library
    {
        redirect('login');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...