我刚刚开始使用codeigniter,我想隐藏带有相同路由设置的URL的控制器名称。
我有3个控制器,即学生,教职员,具有相同功能的教师称为家庭,这显然不起作用
$route['home'] = 'students/home';
$route['home'] = 'staff/home';
有没有办法实现这个目标?我有使用包含用户类型的codeigniter会话类的会话数据,所以我尝试了类似这样的
session_start()
$route['home'] = $_SESSION['user_type'].'/home';
但是我无法获得会话数据,也许它使用的是codeigniter会话类?那么,我怎样才能获得数据?还是有其他解决方案?
答案 0 :(得分:2)
也许您应该编写一个通用控制器并通过第二个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;
}
}
显然,如果需要,你会创建一个学生和员工方法并以不同的方式处理事情。
附注 - 为什么要隐藏控制器的名称?这不是一个安全漏洞或任何东西。