开发一个总后台需要在基类里面判断session是否登陆,不可能在每一个控制器的构造方法里面挨个判断,所以就需要一个后台的基类来判断,每一个控制器继承这个基类。AdminBase 为应用后台的公用的控制器,在每一个应用后台控制器里面都来继承公共的AdminBase ,但是同时要确保AdminBase 也是继承CI_Controller的。
具体实现很简单,只要在application/core下面新建MY_Controller.php,代码如下
(MY_是可配置的,application/config/config.php 文件并找到这一项:$config['subclass_prefix'] = 'MY_';)<?php
/**
* 扩展 Controller
*/
class MY_Controller extends CI_Controller
{
function __construct()
{
parent::__construct();
}
}
/**
* 后台管理基类
*/
class AdminBase extends MY_Controller
{
function __construct()
{
parent::__construct();
/* 验证session是否登陆 */
$admin_sess = $this->session->userdata( 'admin' );
if ( isset( $admin_sess ) && $admin_sess['admin_id'] != '' )
{
/* Success Login ... */
}
else
{
error( '请登录后台', site_url() . '/AdminLogin/login' );
}
}
}
/**
* 会员基类
*/
class UserBase extends MY_Controller
{
function __construct()
{
parent::__construct();
}
}
/**
* 前台基类
*/
class HomeBase extends MY_Controller
{
function __construct()
{
parent::__construct();
}
}
然后在application/controllers里面的控制器就可以继承了,比如application/controllers/AdminIndex.php中<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* 管理后台主页
*/
class AdminIndex extends AdminBase
{
/**
* 构造方法
* @author Yusure http://yusure.cn
* @date 2016-09-13
* @param [param]
*/
public function __construct()
{
parent::__construct();
}
/**
* 后台主页
* @author Yusure http://yusure.cn
* @date 2016-09-13
* @param [param]
* @return [type] [description]
*/
public function index()
{
$this->load->view( 'AdminIndex_index' );
}
}