CI框架教程3——实现框架前后端分离
来源:互联网 发布:轻而易举的软件多少钱 编辑:程序博客网 时间:2024/04/30 06:30
我们在使用CI框架开发中(或者使用所有的其他框架开发中),总是习惯于将所开发项目的前端和后台分离开来,将各自的控制器、模型或视图放到不同的文件夹中。在这一点上ThinkPHP框架要比CI框架更要方便一些。这篇博文我们就讲述如何实现根据CI框架开发将前后端实现分离。(本博文以本人开发的Pkadmin后台管理系统为例,Pkadmin后台管理系统是基于Codeigniter_v3.1.0框架和Olive Admin后台模版进行开发的,在这里就不过多的介绍,有兴趣的博友可以前去OSchina或是Github进行查看欢迎大家指正相互学习。OSchina地址:https://git.oschina.net/zhihua_wei/Pkadmin Github地址:https://github.com/zhihua-wei/Pkadmin)
1、建立合理的目录结构
CI框架的目录结构以及各目录的功能相信大家都已经很了解了,在这里就不在重复的进行介绍了(如果还有不是很明白的可以去看博主的博客专栏)。我们要实现前后端框架功能分离,首先就要建立合理的目录结构,也就是你想将你的前端控制器放在何处、后台控制器放在何处、前端视图放在那个文件夹、后台管理视图放在那个文件夹。
如上图是Pkadmin后台管理系统的目录结构,我将控制器全部放在框架本身的controllers文件夹中,只添加了不同的前端后台文件夹存放各自的控制器文件,视图也是同样。不做赘述。
2、扩展加载器设置视图路径
① 为了项目有更好的维护性,我把视图路径设置为常量,在App/config/constants.php中进行定义常量:
//定义前台视图路径常量 define('HOME_VIEW_DIR', 'views/Home/'); //定义后台视图路径常量 define('ADMIN_VIEW_DIR', 'views/Pkadmin/'); //版本 define('PKADMIN_VERSION', '1.0.0');② 扩展加载器
加载器如何扩展如果有博友不会的可以去查看CI框架手册,上面讲的非常清楚。(多说一句:在APP/core文件夹下创建PK_Loader.php文件)
<?php/** * ========================================== * Created by Pocket Knife Technology. * Author: ZhiHua_W <zhihua_wei@foxmail.com> * Date: 2016/11/02 0031 * Time: 上午 9:19 * Project: Pkadmin后台管理系统 * Version: 1.0.0 * Power: 加载器扩展 * ========================================== */defined('BASEPATH') OR exit('No direct script access allowed');class PK_Loader extends CI_Loader {/** * 设置前台视图路径 */public function set_home_view_dir() {$this -> _ci_view_paths = array(APPPATH . HOME_VIEW_DIR => TRUE);}/** * 设置后台视图路径 */public function set_admin_view_dir() {$this -> _ci_view_paths = array(APPPATH . ADMIN_VIEW_DIR => TRUE);}}
3、扩展控制器
扩展控制器主要是为了生成前台后台的父控制器方便与进行操作继承(为了方便可以很快明白其原理,代码有所精简)。
<?php/** * ========================================== * Created by Pocket Knife Technology. * Author: ZhiHua_W <zhihua_wei@foxmail.com> * Date: 2016/11/02 0031 * Time: 上午 9:23 * Project: Pkadmin后台管理系统 * Version: 1.0.0 * Power: 控制器扩展 * ========================================== */defined('BASEPATH') OR exit('No direct script access allowed');/** * 前台父控制器 */class Home_Controller extends CI_Controller {public function __construct() {parent::__construct();$this -> load -> set_home_view_dir();}}/** * 后台父类控制器 */class Pkadmin_Controller extends CI_Controller {public $data;public function __construct() {parent::__construct();$this -> load -> set_admin_view_dir();}}
4、测试
在Pkadmin控制器文件夹中新建Admin.php(后台首页)控制器文件进行输出测试(代码有所删除精简)。
<?php/** * ========================================== * Created by Pocket Knife Technology. * Author: ZhiHua_W <zhihua_wei@foxmail.com> * Date: 2016/11/05 0015 * Time: 上午 10:23 * Project: Pkadmin后台管理系统 * Version: 1.0.0 * Power: 后台主页控制器 * ========================================== */defined('BASEPATH') OR exit('No direct script access allowed');class Admin extends Pkadmin_Controller {public function __construct() {parent::__construct();$this -> load -> model('login_model', 'admin');$this -> load -> library('pagination');}/** * Pkadmin 后台首页action */public function index() {$this -> load -> view('admin.html', $data);}}后台控制器继承后台父类控制器,前台控制器集成前台父类控制器,同样的在各自视图文件夹中建立相应的视图文件即可是想前后端的完美分离。
- CI框架教程3——实现框架前后端分离
- 基于 SSM框架的前后端分离
- 从MVC到前后端分离(Rest框架搭建)
- Nodeway--基于node.js的轻量级前后端分离框架
- 分享一个前后端分离的轻量级内容管理框架
- 前后端分离项目的技术与框架通用方案
- 从MVC到前后端分离(Rest框架搭建)
- 前后端分离项目的技术与框架通用方案
- Nodeway--基于node.js的轻量级前后端分离框架
- 前后端分离——前后端数据交互
- 前后端框架
- 新手入门——前后端分离开发
- CI框架教程2——优化文件上传方法以及实现多文件上传
- CI框架教程5——整合PHPExcel库应用
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架(第二篇前后端交互数据结构分析)
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架(第二篇前后端交互数据结构分析)
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架(第二篇前后端交互数据结构分析)
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架(第二篇前后端交互数据结构分析)
- oracle 网络访问配置tnsnames.ora文件的路径
- 【BZOJ 1014】[JSOI2008]火星人prefix hash+splay+二分
- Linux下安装、配置、启动Apache
- CF#386(Div.2) 解题报告
- 機器人學總結(4) —— 逆運動學
- CI框架教程3——实现框架前后端分离
- nginx + tomcat 负载均衡
- zookeeper 操作 顺序性如何保证
- gulp的安装教程,使用教程,和简单的自动化任务教程
- 【数据库】使用PLSQL工具时,ORACLE客户端连接串的配置
- Ubuntu崩溃报告工具存在远程代码执行漏洞
- JAVA 网页转图片
- WiFi客流统计帮你解读客流,线下店铺生意不再难做
- 3293: [Cqoi2011]分金币