Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用相同的路由从URL隐藏Codeigniter控制器名称_Php_Codeigniter_Controller_Routes - Fatal编程技术网

Php 使用相同的路由从URL隐藏Codeigniter控制器名称

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

我刚刚开始使用codeigniter,我想用相同的路由设置从URL中隐藏控制器名称

我有3个控制器,分别是学生、员工、教师,它们具有相同的功能,称为“家”,这显然不起作用

$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个控制器。。哦,我还有更多的工作要做。。嗯,我被要求隐藏用户类型