1. 扩展核心类,主要作用就是扩展系统现在的功能。

为前台增加独立的视图文件夹:

  

a. 自定义路径常量 :在application ->config/  constants.php中增加

    

    

/*my constant*/

define('THEMEES_DIR','themes/');

  b. 在application文件夹的core中自定义MY_Loader.php

    

/*
分析核心类中自动加载的功能的实现方式
*/
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Loader extends CI_Loader
{ protected $_theme = 'default/'; public function switch_themes_on()
{
$this->_ci_view_paths = array(FCPATH.THEMEES_DIR.$this->_theme => TRUE);
var_dump($this->_ci_view_paths);
}
public function switch_themes_off()
{ }
}

    

  c. 自定义控制器:实现前台后台视图分离

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Home_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->switch_themes_on();
}
} class Admin_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->switch_themes_off();
}
}

d.  定义控制器类,继承相应的Home_controller,admin_controller控制器。 在admin子控制器文件夹中,

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Hello extends Admin_Controller {
function index()
{ $data['title'] = "this is title.";
$data['content'] = "this is content.";
$this->load->view('hello.php',$data);
}
}

定义相应的视图文件夹及文件view /admin /hello.php

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> </body>admin
<?php echo $content; ?>
</html>

前台独立文件夹 /themes/default

控制器themes.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Themes extends Home_Controller {
function index()
{ $data['title'] = "this is title.";
$data['content'] = "this is content.";
$this->load->view('themes.php',$data);
}
}

注:系统仅支持一层子文件夹,因此需要扩展核心类,实现多层视图文件,及放置到其它独立文件夹中。

codeigniter框架扩展核心类---实现前台后台视图的分离的更多相关文章

  1. Activiti源码分析(框架、核心类。。。)

    http://jiangwenfeng762.iteye.com/blog/1338553 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要 ...

  2. ABP 框架从源码学习——abp框架启动核心类AbpBootstrapper(2)

    在AbpBootstrapper中的两个至关重要的属性:IIocManager 和 IAbpModuleManager  public class AbpBootstrapper : IDisposa ...

  3. PHP MVC框架核心类

    PHP MVC框架核心类 现在我们举几个核心框架的例子演示:在framework/core下建立一个Framework.class.php的文件.写入以下代码: // framework/core/F ...

  4. 一步一步重写 CodeIgniter 框架 (9) —— 使用 CodeIgniter 类库

    通过前面几节的内容,我们从零开始搭建了一个非常方便的MVC框架,理解了 CodeIgniter 框架最核心的部分.然而一个框架的便利不仅仅在于提供一个MVC就可以了,它还必须具有较高的扩展性.下面将从 ...

  5. CodeIgniter框架文件结构

    转自网络:http://my.oschina.net/scholer/blog/99226 这个本来是很基础的东西,基本上用过CI的人都知道这些,原本是不消说的~但是因为毕业论文是关于CodeIgni ...

  6. Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)

    新框架的容器部分终于调通了!容器实在太重要了,所以有用了一个名词叫“核心容器”. 容器为什么那么重要呢?这个有必要好好说道说道. 1.首先我们从框架名称面向接口编程说起,什么是面向接口编程?(这个度娘 ...

  7. laravel administrator 一款通用的后台插件(PHP框架扩展)

    前几天我看了一下zend framework 2的一些官方文档,也找了一些例子,可惜所有的资料少之甚少.于是我就开始去找这国外用的比较流行的PHP框架laravel,希望能够找到其合适的例子,而且我本 ...

  8. Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  9. DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集

    复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...

随机推荐

  1. Javascript Arguments,calle,caller,call,apply

    一.Arguments 该对象代表正在执行的函数和调用他的函数的参数. [function.]arguments[n] 参数function :选项.当前正在执行的 Function 对象的名字. n ...

  2. java基础知识回顾之javaIO类---BufferedReader和BufferedWriter

    使用了装饰设计模式:此类的设计是为了提高流操作数据的效率.思想就是定义容器将数据进行临时存储,对于缓冲区对象,其实就是将这个容器进行了分装,并提供了更高效的操作方法. BufferReader: pa ...

  3. hdu 1531(差分约束)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1531 差分约束的题之前也碰到过,刚好最近正在进行图论专题的训练,就拿来做一做. ①:对于差分不等式,a ...

  4. Fiddler手机抓包工具如何设置过滤域名?

    fiddler手机抓包工具如何设置过滤域名?如题.fiddler抓包可以完成我们移动开发者的调试测试需求.所以说抓包尤其重要,但是多余的网页请求和手机的其他链接影响我们手机开发的需求.下面我教大家怎么 ...

  5. spring_150803_service

    实体类: package com.spring.model; public class DogPet { private int id; private String name; private in ...

  6. 微软VSS的超级BUG

    发现问题:今天一个新同事,无意中发现他直接就登录进VSS了,并且还是“admin”用户: 解决问题:于是开始在网上找度娘和谷歌帮忙,真是不查不要紧,一查吓一跳,VSS本身就存在这个bug,并且是一个超 ...

  7. Android上使用MP3格式录制声音

    0. 下载LAME 并解压缩 http://lame.sourceforge.net/download.php http://sourceforge.net/projects/lame/files/l ...

  8. wordpress可视化编辑器的开启/关闭

    这个可视化编辑器还真是有些难找,在后台菜单“用户”->"我的个人资料" 对以下勾选即可

  9. Mysql数据库连接、查询、记录集操作代码

    Mysql数据库链接代码 function dbConnect($hostname,$username,$pass,$db_name,$pconnect =0) { $func=empty($pcon ...

  10. KVM/QEMU桥接网络设置及kvm资料

    KVM/QEMU桥接网络设置 配置kvm的网络有2种方法.其一,默认方式为用户模式网络(Usermode Networking),数据包由NAT方式通过主机的接口进行传送.其二,使用桥接方式(Brid ...