CodeIgniter 2.x和3.x修改默认控制器问题解答

时间:2023-03-09 15:48:57
CodeIgniter 2.x和3.x修改默认控制器问题解答

首先明确一点,CodeIgniter框架的2.x和3.x版本中修改默认控制器是有一点区别的

但相同的操作都是修改application/config/routes.php

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

welcome为默认的控制器,通过该值来达到修改默认控制器的目的。假如我要把默认控制器设为home,只需要

$route['default_controller'] = "home";
//$route['default_controller'] = "home.html";

默认的扩展名是.php,如果扩展名不是.php的话,请加上扩展名,如上面代码的第二行。

有时候,可能控制器太多了,为了方便,一般都创建几个文件夹来保存控制器,但是,这个时候,修改默认控制器的时候,你就得小心了

因为在CodeIgniter 2.x中设置默认控制器时支持包含路径,即支持包含一级目录,而且只支持一级目录,即  目录/控制器名

比如在application/controller/下有一个test目录,test目录下有一个home控制器,要将该home目录设为默认控制器可按照下面代码完成

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

注意下:目录名中不要包含点 '.'   ,不然点后面的一段就会当成控制器,然而,你并没有那个控制器

重点来了:CodeIgniter 3.x是不支持设置默认控制器时用一级目录的形式,即上面的代码并不会管用,

你只能在那个位置填控制器名,而不能有目录

不然,即使你填了一级目录,那你访问的时候显示的也是404错误

然而,虽然3.x不能设置一级目录,但是可以通过URL访问有多级目录的控制器中的方法,

比如在文件的application/controllers/admin/Hello.php中有一个默认的index方法

那么就可已通过 ..../index.php/admin/hello/index来访问