CI框架3.x 之实现前后端分离
一、建立合理的目录结构

admin与home为后台和前台的控制器和模板文件夹
二、定义前后台视图路径常量
在constants.php中添加如下代码:
//定义前台视图路径常量
define('HOME_VIEW_DIR', 'views/home/');
//定义后台视图路径常量
define('ADMIN_VIEW_DIR', 'views/admin/');
三、创建扩展加载器
在core文件夹中创建MY_Loader.php,代码如下:
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019/2/16 0016
* Time: 下午 1:31
*/
defined('BASEPATH') OR exit('No direct script access allowed'); class MY_Loader extends CI_Loader
{
/**
* @Description: 设置前台模板页面路径
* @Author: Yang
*/
public function set_home_view_dir()
{
$this->_ci_view_paths = array(APPPATH . HOME_VIEW_DIR => TRUE);
} /**
* @Description: 设置后台模板页面路径
* @Author: Yang
*/
public function set_admin_view_dir()
{
$this -> _ci_view_paths = array(APPPATH . ADMIN_VIEW_DIR => TRUE);
}
}
四、创建前台控制器
在home文件夹中添加index.php文件,代码如下:
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019/2/16 0016
* Time: 下午 1:25
*/
defined('BASEPATH') OR exit('No direct script access allowed'); class Index extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->set_home_view_dir();
} public function index()
{
$this->load->view("home.html");
}
}
访问前台结果如下图所示:

五、创建后台控制器
在admin文件夹中添加index.php,代码如下:
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019/2/16 0016
* Time: 下午 1:25
*/
defined('BASEPATH') OR exit('No direct script access allowed'); class Index extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->set_admin_view_dir();
} public function index()
{
$this->load->view("admin.html");
}
}
访问后台结果如下图所示:

六、解决默认控制器default_controller为目录/Controller名
打开system\core目录下的Router.php, 大概在298行
注释下段代码
// Is the method being specified?
if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2)
{
$method = 'index';
}
新增以下代码
$index = strripos($this->default_controller, '/'); // 记录 符号‘/’的下标
if($index == false){
$class = $this->default_controller; // 没有‘/’ 的可以直接赋值
}else{
$this->directory = substr($this->default_controller, 0, $index + 1); //目录的字符串
$class = substr($this->default_controller, $index + 1); //类的字符串
}
$method = $this->method; //默认方法
如果是 '路径/类名' ,以上的配置就够了
CI框架3.x 之实现前后端分离的更多相关文章
- REST风格框架:从MVC到前后端分离***
摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...
- [原创]基于VueJs的前后端分离框架搭建之完全攻略
首先请原谅本文标题取的有点大,但并非为了哗众取宠.本文取这个标题主要有3个原因,这也是写作本文的初衷: (1)目前国内几乎搜索不到全面讲解如何搭建前后端分离框架的文章,讲前后端分离框架思想的就更少了, ...
- .NET Core前后端分离快速开发框架(Core.3.0+AntdVue)
.NET Core前后端分离快速开发框架(Core.3.0+AntdVue) 目录 引言 简介 环境搭建 开发环境要求 基础数据库构建 数据库设计规范 运行 使用教程 全局配置 快速开发 管理员登录 ...
- [转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue)
[转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue) 目录 引言 简介 环境搭建 开发环境要求 基础数据库构建 数据库设计规范 运行 使用教程 全局配置 快速开发 管理员 ...
- NET Core3前后端分离开发框架
NET Core前后端分离快速开发框架 https://www.cnblogs.com/coldairarrow/p/11870993.html 引言 时间真快,转眼今年又要过去了.回想今年,依次开源 ...
- 实现真正意义上的前后端分离------由淘宝引入nodejs引发的思考
说起前后端分离,大家包括我自己都会想到: 当今流行的MVC不就是最标准的前后端分离吗? 说到这里,我不禁要反问,MVC真正的实现了前后端分离了吗? 无论是PHP的MVC框架TP还是JAVA的MVC框架 ...
- 【开源】【前后端分离】【优雅编码】分享我工作中的一款MVC+EF+IoC+Layui前后端分离的框架——【NO.1】框架概述
写博客之前总想说点什么,但写的时候又忘了想说点什么,算了,不说了,还是来送福利吧. 今天是来分享我在平时工作中搭建的一套前后端分离的框架. 平时工作大多时候都是在做管理类型的软件开发,无非就是增.删. ...
- Thinkphp5.0+Vue2.0前后端分离框架Vuethink
VueThink是一套基于Vue全家桶(Vue2.x + Vue-router2.x + Vuex)+ Thinkphp的前后端分离框架. 脚手架构建也可以通过vue官方的vue-cli脚手架工具构建 ...
- REST风格框架实战:从MVC到前后端分离(附完整Demo)
既然MVC模式这么好,难道它就没有不足的地方吗?我认为MVC至少有以下三点不足:(1)每次请求必须经过“控制器->模型->视图”这个流程,用户才能看到最终的展现的界面,这个过程似乎有些复杂 ...
随机推荐
- struts2国际化---配置国际化全局资源文件并输出国际化资源信息
我们首先学习怎么配置国际化全局资源文件.并输出资源文件信息 1.首先struts2项目搭建完毕后,我们在src文件夹下.即struts2.xml同级文件夹下创建资源文件.资源文件的名称格式为: XXX ...
- [LeetCode][Java] N-Queens II
题目: Follow up for N-Queens problem. Now, instead outputting board configurations, return the total n ...
- LeetCode 141. Linked List Cycle (链表循环)
Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...
- java梳理-反射
本文属于面试题梳理系列:问题:java反射类的訪问私有方法与普通方法相比,须要多处理什么? 之前梳理类载入的时候,介绍到初始化的时机之中的一个:用java.lang.reflect包的方法对类进行反 ...
- 解析UML九种图
UML作为设计工具,重在实践上,而这就离不开九种图了.绘图是在看完视频以后进行的,刚開始绘图的时候脑袋懵懵的,不知道该从哪下手,于是就在绘图之前再次的学习了一下这九种图和四种关系.理了 ...
- luogu1040 加分二叉树
题目大意 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第j个节点的分数为di,tree及它的每个子树都 ...
- ios3--UIView的常见方法
// // ViewController.m // 07-UIView的常见方法 // #import "ViewController.h" @interface ViewCont ...
- 插入排序(1)——直接插入排序(insert sort)
假设有一组无序序列 R0, R1, ... , RN-1. (1) 我们先将这个序列中下标为 0 的元素视为元素个数为 1 的有序序列. (2) 然后,我们要依次把 R1, R2, ... , RN- ...
- 第四周 Leetcode 124. Binary Tree Maximum Path Sum (HARD)
124. Binary Tree Maximum Path Sum 题意:给定一个二叉树,每个节点有一个权值,寻找任意一个路径,使得权值和最大,只需返回权值和. 思路:对于每一个节点 首先考虑以这个节 ...
- 创建 /dev/video0 节点 (转载)
转自:http://blog.csdn.net/linuxmake/article/details/8208464 最近做摄像头驱动,发现没有 /dev/video0节点,经过查看发现是内核编译时没有 ...