[学习笔记]CodeIgniter利用子文件夹控制器实现前后台分离
简单来说,这几天学习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
13class 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
13class 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 用户指南