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)每次请求必须经过“控制器->模型->视图”这个流程,用户才能看到最终的展现的界面,这个过程似乎有些复杂 ...
随机推荐
- maven bug之Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project acSpaceCommon: Fatal error compiling: tools.jar not found: C:\Program Files\J
maven打包项目的时候一直报这个异常 一般的解决办法我都试过 在pom.xml加代码 也不行 只有10分了 求大神解答 这是因为测试代码时遇到错误,它会停止编译.只需要在pom.xml的< ...
- Ubuntu安装Sublime Text并输入中文
Sumblime Text3是一款传说中的神级代码编辑器,具有下面特点: 1.代码高亮,自己主动补全 2.各种插件扩展 3.外观简洁舒适 4.跨平台(Windows,Linux,OS X) 简而言之就 ...
- [Vue + TS] Watch for Changes in Vue Using the @Watch Decorator with TypeScript
Vue watchers allow to perform async updates as a side effect of a property change. This lesson shows ...
- 关于new和malloc以及delete和free能否够混用
/* *1>当申请的空间是内置类型时,delete和free能够混用 *2>当申请的空间是自己定义类型时, * 1>若没有析构函数.delete和malloc能够混用.有 ...
- 大数据分析:结合 Hadoop或 Elastic MapReduce使用 Hunk
作者 Jonathan Allen ,译者 张晓鹏 Hunk是Splunk公司一款比較新的产品,用来对Hadoop和其他NoSQL数据存储进行探測和可视化,它的新版本号将会支持亚马逊的Elastic ...
- hdu 1728 逃离迷宫 bfs记步数
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Mem ...
- PhoneGap3+版本号的安装、配置和使用[图]
如若转载.请注明博文地址及原作者(RisingWonderland). PhoneGap2+版本号最高为2.9.1,从3+版本号開始,PhoneGap官方不再提供下载安装包,须要在联网状态下.通过No ...
- react 使用
我的有道云笔记 React 事件: 1.不能使用 return false; 来阻止元素的默认行为.需要在方法的最前面使用 e.preventDefault() 来阻止元素的默认行为(例如:a 标签的 ...
- POJ 2007 Scrambled Polygon(简单极角排序)
水题,根本不用凸包,就是一简单的极角排序. 叉乘<0,逆时针. #include <iostream> #include <cstdio> #include <cs ...
- Polymorphism (C# Programming Guide)
https://msdn.microsoft.com/en-us/library/ms173152.aspx Polymorphism is often referred to as the thir ...