Php 使用相同的路由从URL隐藏Codeigniter控制器名称
我刚刚开始使用codeigniter,我想用相同的路由设置从URL中隐藏控制器名称 我有3个控制器,分别是学生、员工、教师,它们具有相同的功能,称为“家”,这显然不起作用Php 使用相同的路由从URL隐藏Codeigniter控制器名称,php,codeigniter,controller,routes,Php,Codeigniter,Controller,Routes,我刚刚开始使用codeigniter,我想用相同的路由设置从URL中隐藏控制器名称 我有3个控制器,分别是学生、员工、教师,它们具有相同的功能,称为“家”,这显然不起作用 $route['home'] = 'students/home'; $route['home'] = 'staff/home'; 有没有办法做到这一点?我使用包含用户类型的codeigniter会话类获取会话数据,所以我尝试了类似的方法 session_start() $route['home'] = $_SESSI
$route['home'] = 'students/home';
$route['home'] = 'staff/home';
有没有办法做到这一点?我使用包含用户类型的codeigniter会话类获取会话数据,所以我尝试了类似的方法
session_start()
$route['home'] = $_SESSION['user_type'].'/home';
但是我无法获取会话数据,可能是使用codeigniter会话类??那么,我怎样才能得到数据呢?或者有其他解决方案吗?也许您应该编写一个公共控制器,并通过第二个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;
}
}
显然,如果需要的话,你会创建一个学生和教职员工的方法,并以不同的方式处理事情
旁注-为什么要隐藏控制器的名称?这不像是一个安全漏洞或任何东西。你的URL是什么?据我所见,您正试图将
/home
路由到多个控制器/方法,这是不可能的。(除非你有一个方法本身执行路由逻辑。)localhost/ci_project/students/home,../staff/home,我用一个控制器处理每个用户类型,每个用户都有home函数。我可以动态地做吗?可能有一种方法可以动态地做,但我不确定CodeIgniter是否能很好地使用它。举个例子,你可以根据一个字符串,在它的基础上。好的,我来试试。。谢谢你的解决方案谢谢,我明白了。。嗯,我在一个控制器中有大约6个方法,我有4个控制器。。哦,我还有更多的工作要做。。嗯,我被要求隐藏用户类型