Условная маршрутизация в Codeigniter

Я искал все это и нигде не могу найти решение. Кто-нибудь знает, как настроить условный маршрут в CI? Например, если пользователь вошел в систему, то default_controller должно быть documents, а если нет, то должно быть home. Я пробовал очевидное:

if ( $this->session->userdata('user_logged_in') ) {

    $route['default_controller'] = "documents";

} else {

    $route['default_controller'] = "home";

}

Однако это, похоже, не работает, поскольку я предполагаю, что сеанс недоступен до тех пор, пока маршруты не будут установлены.


person Jordan Adams    schedule 20.03.2014    source источник
comment
Это правда, маршруты загружаются до установки сеанса CI. Одним из решений было бы расширение CI_Controller для проверки сеанса, а затем вызов разных методов/загрузка разных представлений.   -  person Hashem Qolami    schedule 20.03.2014
comment
Я добавил перенаправление перед методом home/index. Однако это приводит к тому, что URL-адрес становится domain.com/documents. Есть ли способ, которым один контроллер запускает метод другого контроллера?   -  person Jordan Adams    schedule 20.03.2014
comment
Есть два варианта: либо перенаправить вошедшего или не вошедшего в систему пользователя на другой URL-адрес (контроллер/метод), либо вызвать разные методы класса MY_Controller для вошедших или не вошедших в систему пользователей, чтобы предотвратить изменение URL-адреса. . Вы также можете использовать второй подход в своем контроллере home.   -  person Hashem Qolami    schedule 20.03.2014
comment
опубликуйте расширенный ответ из своего комментария, то, что вы предлагаете, - это способ сделать это   -  person Federico J.    schedule 21.03.2014


Ответы (1)


Вам необходимо расширить контроллер с помощью проверки сеанса, если пользователь вошел в систему или нет. Затем вы можете перенаправить() пользователя соответствующим образом.

person Sagar Awasthi    schedule 25.03.2014