Скрыть имя контроллера Codeigniter из URL с теми же маршрутами

я только начинаю с codeigniter, я хочу скрыть имя контроллера из URL с той же настройкой маршрутов.

У меня есть 3 контроллера, которые являются учениками, персоналом, преподавателями, имеющими ту же функцию, что и дома, это не будет работать явно

$route['home'] = 'students/home'; $route['home'] = 'staff/home'; 

есть ли способ сделать это? У меня есть данные сеанса, используя класс sessionigniter, содержащий тип пользователя, поэтому я попробовал что-то вроде этого

 session_start() $route['home'] = $_SESSION['user_type'].'/home'; 

но я не могу получить данные сеанса, возможно, используя класс sessionigniter session? так, как я могу получить данные? или есть другое решение?

Возможно, вам следует написать общий контроллер и разойтись по вашему второму параметру URI:

домой / студенты или дом / персонал

 $route['home/:any'] = "home"; 

и индексный метод домашнего контроллера:

 public function index() { $type = $this->uri->segment(2); switch($type){ case "student": $this->student(); break; case "staff": $this->staff(); break; default: $this->some_other_method(); break; } } 

Очевидно, что вы бы создали метод ученика и персонала и, если нужно, обрабатывали вещи по-разному.

Замечание – почему вы хотите скрыть имя контроллера? Не похоже, что это дыра в безопасности или что-то еще.