zoukankan      html  css  js  c++  java
  • codeigniter框架扩展核心类---实现前台后台视图的分离

    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);
            }
        }


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

  • 相关阅读:
    存储过程output String[1]: Size 属性具有无效大小值0
    深入理解JS异步编程四(HTML5 Web Worker)
    深入理解JS异步编程三(promise)
    深入理解JS异步编程二(分布式事件)
    深入理解JS异步编程(一)
    不定高多行溢出文本省略
    深入解析js中基本数据类型与引用类型,函数参数传递的区别
    javascript的replace+正则 实现ES6的字符串模版
    从输入网址到显示网页的全过程分析
    WebStorage 和 Cookie的区别
  • 原文地址:https://www.cnblogs.com/hubing/p/3291851.html
Copyright © 2011-2022 走看看