本文实例分析了CI框架实现框架前后端分离的方法。分享给大家供大家参考,具体如下:

我们在使用CI框架开发中(或者使用所有的其他框架开发中),总是习惯于将所开发项目的前端和后台分离开来,将各自的控制器、模型或视图放到不同的文件夹中。在这一点上ThinkPHP框架要比CI框架更要方便一些。这篇博文我们就讲述如何实现根据CI框架开发将前后端实现分离。(本文以本人开发的Pkadmin后台管理系统为例,Pkadmin后台管理系统是基于Codeigniter_v3.1.0框架和Olive Admin后台模版进行开发的,在这里就不过多的介绍,感情趣的朋友可以到Github进行查看欢迎大家指正相互学习。
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);
}
}
后台控制器继承后台父类控制器,前台控制器集成前台父类控制器,同样的在各自视图文件夹中建立相应的视图文件即可是想前后端的完美分离。
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
# CI框架
# 前后端
# 分离
# CI框架入门示例之数据库取数据完整实现方法
# php ci框架中加载css和js文件失败的解决方法
# CI框架中site_url()和base_url()的区别
# CI框架中libraries
# helpers
# hooks文件夹详细说明
# php CI框架插入一条或多条sql记录示例
# php ci框架验证码实例分析
# CI框架中cookie的操作方法分析
# CI框架开发新浪微博登录接口源码完整版
# CI框架Session.php源码分析
# CI框架自动加载session出现报错的解决办法
# 如何解决CI框架的Disallowed Key Characters错误提示
# CI框架源码阅读
# 系统常量文件constants.php的配置
# 管理系统
# 放在
# 后端
# 加载
# 在这里
# 夹中
# 上午
# 首页
# 程序设计
# 进阶
# 相关内容
# 大家都
# 一句
# 就不
# 不是很
# 我把
# 感兴趣
# 去看
# 给大家
# 我将
相关文章:
网站制作价目表怎么做,珍爱网婚介费用多少?
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何在Tomcat中配置并部署网站项目?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何正确选择百度移动适配建站域名?
上海网站制作开发公司,上海买房比较好的网站有哪些?
建站之星2.7模板:企业网站建设与h5定制设计专题
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何通过PHP快速构建高效问答网站功能?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
建站之星如何优化SEO以实现高效排名?
如何彻底删除建站之星生成的Banner?
如何制作算命网站,怎么注册算命网站?
如何在云主机上快速搭建多站点网站?
定制建站方案优化指南:企业官网开发与建站费用解析
模具网站制作流程,如何找模具客户?
微信小程序 input输入框控件详解及实例(多种示例)
建站之家VIP精选网站模板与SEO优化教程整合指南
建站OpenVZ教程与优化策略:配置指南与性能提升
建站之星如何实现五合一智能建站与营销推广?
如何用狗爹虚拟主机快速搭建网站?
如何选择建站程序?包含哪些必备功能与类型?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
教学网站制作软件,学习*后期制作的网站有哪些?
如何快速搭建支持数据库操作的智能建站平台?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
高端企业智能建站程序:SEO优化与响应式模板定制开发
Java解压缩zip - 解压缩多个文件或文件夹实例
如何确保FTP站点访问权限与数据传输安全?
如何快速选择适合个人网站的云服务器配置?
小程序网站制作需要准备什么资料,如何制作小程序?
已有域名和空间如何快速搭建网站?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
公司网站的制作公司,企业网站制作基本流程有哪些?
,制作一个手机app网站要多少钱?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何通过二级域名建站提升品牌影响力?
网站制作公司排行榜,抖音怎样做个人官方网站
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何用搬瓦工VPS快速搭建个人网站?
活动邀请函制作网站有哪些,活动邀请函文案?
如何用PHP快速搭建CMS系统?
如何在阿里云ECS服务器部署织梦CMS网站?
c++怎么用jemalloc c++替换默认内存分配器【性能】
TestNG的testng.xml配置文件怎么写
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
如何高效搭建专业期货交易平台网站?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
*请认真填写需求信息,我们会在24小时内与您取得联系。