получить доступ к сеансу CI в ловушке кодового регулятора до контроллера - PullRequest
2 голосов
/ 30 декабря 2011

Я использую ловушку pre controller для обнаружения и установки языка сайта из определения lang сессии / cookie / браузера .. что-то вроде этого ответа: Language Codeigniter

Я такжеиспользуя знаменитую библиотеку Tank Auth для управления пользователями, а я использую класс Session codeigniter для хранения и управления сеансами пользователей при входе в систему. Каждый пользователь может указать желаемый язык интерфейса и сохранить его в базе данных для будущих входов в систему.Информация lang копируется из БД в сеанс при каждом входе в систему.

Проблема в том, что я не могу проверить сеанс пользователя изнутри ловушки.Как бы я узнал (в случае входа в систему пользователей), имеет ли его сеанс информацию о lang или нет?

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

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 02 января 2012

Я решил это, используя post_controller_constructor hook вместо pre_controller .В этом хуке сеанс доступен.Поэтому я устанавливаю обнаруженный lang в сеансе CI И соответственно загружаю языковой файл.

Я не уверен, что это лучший подход, но он прекрасно работает, если вы не используете библиотеку lang влюбой конструктор контроллера.

2 голосов
/ 17 апреля 2012

использовать закладку post_controller_constructor. Он вызывается после конструктора контроллера и перед методом контроллера. Это должно помочь вам. Для меня это сделал

0 голосов
/ 30 декабря 2011

Одним из возможных решений является попытка загрузки библиотеки сеансов в экземпляре CI из ловушки предварительного контроллера.

$CI = &get_instance();   
$CI->load->library('session');
// --- Then ---
$var = $CI->session->userdata('$the_variable_youre_checking');
...