用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4797|回复: 6
收起左侧

[已解决] 能否创建一个自己的Controller基类?

[复制链接]
发表于 2010-12-17 21:26:53 | 显示全部楼层 |阅读模式
自己所有的Controller都继承Controller基类。
但是现在要对几个Controller设置一些共同的程序
想问问有没有办法自己写一个BaseController的基类,继承CI提供的Controller,
之后具体功能的Controller类继续写的BaseController?

自己写了一下,发现不行。
不知道是不是我写的不对。。。。
PHP复制代码
class BaseController extends Controller {
    function __construct() {
        parent::Controller();
    }
}
 
复制代码

之类的定义:
PHP复制代码
 
class Main extends BaseController {
    function __construct() {
        parent::Controller();
    }
   
    function index() {
        $data['title_for_layout'] = '木禾-52host';
        $data['site_description'] = '';
        $data['site_keywords'] = '';
        $data['site_name'] = '';
        $this->layout->view('main/home', $data);
    }
}
 
复制代码


页面错误提示:Fatal error: Class 'BaseController' not found in F:\puras\php\52host\system\application\controllers\main.php on line 2

求教!!!
 楼主| 发表于 2010-12-17 22:11:48 | 显示全部楼层
使用Library解决了:
PHP复制代码
 
class MK_Controller extends Controller {
    function __construct() {
        parent::__construct();
        $this->base_data['site_name'] = $this->config->item('site_name');
        $this->base_data['site_description'] = $this->config->item('site_description');
        $this->base_data['site_keywords'] = $this->config->item('site_keywords');
    }
}
 
复制代码

子类:
PHP复制代码
 
class Main extends MK_Controller {
    function __construct() {
        parent::__construct();
    }
   
    function index() {
        $data = $this->base_data;
        $this->layout->view('main/home', $data);
    }
}
 
复制代码

 楼主| 发表于 2010-12-17 23:50:07 | 显示全部楼层
可惜啊。
它只能重写原有的类。
而不能自己创建新的类。。。
比如MK_Controller,你再写别的Controller就没戏了。5555555
发表于 2010-12-18 11:07:18 | 显示全部楼层
是的 CI 不支持多级控制器继承,只能从 MY_Controller 继承。
等新版 CI 吧。
 楼主| 发表于 2010-12-20 09:00:57 | 显示全部楼层
回复 4# Hex

发表于 2010-12-23 16:25:38 | 显示全部楼层
哎,上次我也有这个问题,最后直接修改controller文件,添加了几个函数!!
 楼主| 发表于 2010-12-23 23:31:18 | 显示全部楼层
回复 6# zfm1988


   可是有些函数是在好几个Controller里都要用到的。为Controller中的每个方法设置一些初始值。
没有基类,真的很不方便。哈。

本版积分规则