|
纯属小白,对扩展核心系统类具体能有多少好处也说不出来,但就目前认知感觉自己扩展的核心系统类,可以把一些通用的方法写在自己的类里面,方便快捷使用。
下面共享一下今天的学习成果,一边是手册一边是dilicms。感谢dilicms作者提供这么好的源码。
本人小白菜一个,文中如有不对,请各位大神拍砖指教
一、扩展核心系统类文件必须存放于【application\core】目录下。
二、建立你的核心系统类文件 如“Talent_Controller.php”;必须以XX_为前缀,切不能为CI_。
三、打开 application/config/config.php 修改 $config['subclass_prefix'] = 'MY_'; 为你的前缀。
四、Talent_Controller.php内容的编写:
PHP复制代码
//Talent_Controller 继承CI_Controller 这样一个名为Talent_Controller的扩展核心类就形成了
abstract class Talent_Controller extends CI_Controller
{
some codes...
}
复制代码
五、可以写多个类来分别应用如前台和后台,上面我们定义了一个Talent_Controller全站通用,接下来再分别定义两个类分别应用于前台和后台。
PHP复制代码
//前台类,Home_Controller 继承Talent_Controller(也就继承了CI_Controller)
abstract class Home_Controller extends Talent_Controller
{
some codes...
}
//后台类,Admin_Controller 继承Talent_Controller
abstract class Admin_Controller extends Talent_Controller
{
some codes...
}
复制代码
六、使用扩展核心类只需在你的控制器里面只要 extends Admin_Controller 或者 Home_Controller 或者 Talent_Controller 就可以了。
七、简单应用:
A:后台检测是否登录,如未登录跳转到登录界面;后台所有控制器都继承Admin_Controller。
具体代码如下:
PHP复制代码
abstract class Admin_Controller extends Talent_Controller
{
//构造函数
function __construct()
{
parent::__construct();
$this->load->library('session'); //后台所有地方都会用到Session所以这里载入Session类库
$this->_check_login();//所有页面都需要检测是否登录
}
function _check_login()
{
if(! $this->session->userdata('uid'))
{
//如果没登陆则跳转到登录界面,_message方法是我自定义的,后面会提出。
$this->_message('对不起,您暂未登录!','admin/login',true);
}
}
}
复制代码
如上代码,你所有的后台页面控制器只要继承Admin_Controller就都会自动检测是否已经登录,不用每个页面都检测是否登录了,Session类库也都自动加载了。
B、通用信息提示功能,大部分网站都有信息提示页面用来提示用户,如操作成功,操作失败,等提示。
具体代码如下:
PHP复制代码
abstract class Talent_Controller extends CI_Controller
{
function __construct ()
{
parent ::__construct ();
}
/*
通用信息提示
$msg - 提示文字
$goto - 跳转路径(如为空为上一页路径)
$auto - 是否自动跳转
*/
function _message ($msg, $goto = '',$auto = true)
{
if($goto == '')
{
//三元运算,$_SERVER['HTTP_REFERER']是父页面地址,如果有父页面地址,则$goto就是父页面地址
//如果没有父页面地址则$goto就是site_url()
$goto = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : site_url ();
}
else
{
$goto = site_url ($goto);
}
$this->load->view('sys_message',array('msg'=>$msg,'goto'=>$goto,'auto'=>$auto));
echo $this->output->get_output();
exit();
}
}
复制代码
这就是今天的学习成功,希望对跟我一样的新手有些帮助,欢迎老鸟拍砖指教!
|
评分
-
查看全部评分
|