CodeIgniter - Модель не может получить доступ к глобальным переменным в CodeIgniter - PullRequest
0 голосов
/ 22 марта 2012

Я пытаюсь получить доступ к глобальным переменным из модели.Глобальная переменная устанавливается из контроллера:

function sets(){
        $value = $this->input->post('current_id');
        $anywhere = array('current_id'=>$value);
        $this->load->vars($anywhere);

}

Но модель не знает значения текущего идентификатора:

$session_id = $this->load->get_var('current_id');

Ответы [ 3 ]

0 голосов
/ 22 марта 2012

Попробуйте это,

$ci =& get_instance();
$ci->load->get_var('current_id');

Но я думаю, это не очень хорошая идея.

Вы можете использовать метод input-> post () для модели или установить переменную с аргументами функции модели.

0 голосов
/ 22 марта 2012

К сожалению, модель CodeIgniter не имеет доступа к значениям, которые вы ищете. Но есть надежда! Есть несколько способов получить доступ к параметрам, загружаемым из запроса, выбрать яд, но наличие определенного контрактного интерфейса для вашей модели, на мой взгляд, делает запись код проще и меньше хлопот, чтобы поддерживать вниз по линии.

Ссылка на объект CodeIgniter может быть получена следующим образом:

$ci =& get_instance();
$session_id = $ci->load->get_var('current_id');

Конечно, это был бы отвратительный способ получить ваши данные. Лучшим подходом было бы передать его самой модели в качестве параметра. Вы не собираетесь платить за это много, и он дает вам подпись контракта на методе, где вы можете указать и сказать: «Эй, это должно быть current_id модели:

function sets($session_id)
{
...
}

И, конечно, вы просто передаете значение, которое вы хотите $ current_id в качестве аргумента в вызове этой функции. Это дает вам возможность не полагаться на тот факт, что вы заполняете модель из HTTP-запроса POST.

0 голосов
/ 22 марта 2012

Класс CI_Model не имеет Loader, поэтому $ this-> load не существует в модели.

$ this-> load-> get_var () для использования контроллерами. Из документации погрузчика -

Это полезно, если по какой-либо причине переменная установлена ​​в библиотеке или другом методе контроллера, использующем $ this-> load-> vars ().

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