全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

CI框架实现框架前后端分离的方法详解

本文实例分析了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的配置  # 管理系统  # 放在  # 后端  # 加载  # 在这里  # 夹中  # 上午  # 首页  # 程序设计  # 进阶  # 相关内容  # 大家都  # 一句  # 就不  # 不是很  # 我把  # 感兴趣  # 去看  # 给大家  # 我将 


相关文章: 建站之星展会模版如何一键下载生成?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  如何在建站之星网店版论坛获取技术支持?  如何快速生成专业多端适配建站电话?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  高性价比服务器租赁——企业级配置与24小时运维服务  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  建站之星备案流程有哪些注意事项?  建站之星后台密码如何安全设置与找回?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  建站之星2.7模板:企业网站建设与h5定制设计专题  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何在云主机快速搭建网站站点?  如何零基础在云服务器搭建WordPress站点?  如何实现建站之星域名转发设置?  ,怎么在广州志愿者网站注册?  建站主机选哪种环境更利于SEO优化?  湖北网站制作公司有哪些,湖北清能集团官网?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  如何在阿里云高效完成企业建站全流程?  开封网站制作公司,网络用语开封是什么意思?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  无锡营销型网站制作公司,无锡网选车牌流程?  建站DNS解析失败?如何正确配置域名服务器?  盘锦网站制作公司,盘锦大洼有多少5G网站?  建站之星代理平台如何选择最佳方案?  建站主机选购指南与交易推荐:核心配置解析  导航网站建站方案与优化指南:一站式高效搭建技巧解析  如何通过IIS搭建网站并配置访问权限?  如何通过二级域名建站提升品牌影响力?  如何规划企业建站流程的关键步骤?  如何快速生成高效建站系统源代码?  c# 在高并发场景下,委托和接口调用的性能对比  家庭建站与云服务器建站,如何选择更优?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  建站之星安装模板失败:服务器环境不兼容?  内部网站制作流程,如何建立公司内部网站?  *服务器网站为何频现安全漏洞?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  如何在Golang中使用replace替换模块_指定本地或远程路径  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  c++怎么用jemalloc c++替换默认内存分配器【性能】  建站之星代理如何优化在线客服效率?  html制作网站的步骤有哪些,iapp如何添加网页?  如何快速搭建高效WAP手机网站?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  ,交易猫的商品怎么发布到网站上去?  已有域名能否直接搭建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。