简单来说,这几天学习CodeIgniter,发现前后台分离部分网上搜的方法要么是改控制器继承,要么是复制application文件夹和入口文件,从复用性角度上看略蛋疼,哪有为了前后台把框架文件复制一遍的.
于是看了下用户手册,发现完全可以使用子文件夹控制器的方式来实现CodeIgniter前后台配置分离的效果:

如何将控制器放入子文件夹中

如果你在建立一个大型的应用程序,你会发现 CodeIgniter 可以很方便的将控制器放到一些子文件夹中。

只要在 application/controllers 目录下创建文件夹并放入你的控制器就可以了。

注意: 如果你要使用某个子文件夹下的功能,就要保证 URI 的第一个片段是用于描述这个文件夹的。例如说你有一个控制器在这里:
application/controllers/products/shoes.php

调用这个控制器的时候你的 URI 要这么写:
example.com/index.php/products/shoes/show/123
你的每个子文件夹中需要包含一个默认的控制器,这样如果 URI 中只有子文件夹而没有具体功能的时候它将被调用。只要将你作为默认的控制器名称在 application/config/routes.php 文件中指定就可以了。

CodeIgniter 也允许你使用 URI 路由 功能来重新定向 URI。

官方文档写的很清楚了,于是便很简单了:
在application/controllers里新建个默认控制器,这里取名为default_controller.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Default_controller extends CI_Controller
{

public function __construct()
{

parent::__construct();
}

public function index()
{

//the code of home controllers
}

}

然后在application/controllers里建立个子文件夹,如admin.
在application/controllers/admin里也建立个同名的控制器default_controller:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Default_controller extends CI_Controller
{

public function __construct()
{

parent::__construct();
}

public function index()
{

//the code of admin controllers
}

}

最后,在application/config/routes.php里指定默认控制器路由为刚才那两个同名的控制器:

1
$route['default_controller'] = "Default_controller";

于是便完成了.之后使用访问http://xxxxx/index.php/访问前台,
使用访问http://xxxxx/index.php/admin访问后台.
这是默认不加控制器名的情况下,所以访问的是默认控制器的index方法,加控制器名后同理~ ~

其实,CI框架还是非常灵活和自由的,以上只是本人强迫症犯了的结果罢了~ ~ ~

PS:受不了WordPress了…写一篇博文跨了12点,然后登录失效了…
结果点击发布直接跳到登录验证了…说好的自动保存草稿呢?
装摸做样的自动保存,点开草稿箱发现
什么都没有!!什么都没有!都没有!没有!没!有!…
所以这篇文章是重写的…_(:з」∠)__
我手贱..以后再也不这样无草稿直接发布了~ ~ ~
以上.

参考链接:
CodeIgniter 用户指南

如未特殊注明,本站文章均为原创

转载请注明:转载自quericy的博客(https://quericy.me)

本文链接地址: [学习笔记]CodeIgniter利用子文件夹控制器实现前后台分离