Я использую крюк предварительного контроллера для обнаружения и установки языка сайта из обнаружения сеанса / файла cookie / браузера .. что-то вроде этого ответа: язык Codeigniter
Я также использую знаменитую библиотеку Tank Auth для управления пользователями, и я использую класс Sessionigniter Session для хранения и управления сеансами пользователей при входе в систему. Каждый пользователь может указать язык интерфейса, который он хочет, и сохранить его в базе данных для будущих входов в журнал , Информация о ленгах копируется из БД на сеанс при каждом входе в систему.
Проблема в том, что я не могу проверить сеанс пользователя внутри крючка. Как я могу узнать (в случае входа в систему пользователей), если в его сеансе есть информация о ленге или нет?
Я не уверен, что подход с крюком является лучшим в случае обработки сеансов пользователей. Сообщите мне, пожалуйста, если у меня будет лучший подход.
заранее спасибо
Я решил это с помощью post_controller_constructor hook вместо pre_controller . В этом случае сеанс доступен. Поэтому я устанавливаю обнаруженный lang в сеансе CI. И я загружаю языковой файл соответствующим образом.
Я не уверен, что это лучший подход, но он отлично работает, если вы не используете библиотеку lang в любом конструкторе контроллера.
используйте post_controller_constructor hock. Он вызывается после конструктора контроллера и перед методом контроллера. Это должно сделать трюк для вас. Для меня это
Одно из возможных решений – попытаться загрузить библиотеку сеансов в экземпляре CI с вашего крючка перед контроллером.
$CI = &get_instance(); $CI->load->library('session'); // --- Then --- $var = $CI->session->userdata('$the_variable_youre_checking');