puras 发表于 2010-12-17 21:26:53

能否创建一个自己的Controller基类?

自己所有的Controller都继承Controller基类。
但是现在要对几个Controller设置一些共同的程序
想问问有没有办法自己写一个BaseController的基类,继承CI提供的Controller,
之后具体功能的Controller类继续写的BaseController?

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

之类的定义:

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

求教!!!

puras 发表于 2010-12-17 22:11:48

使用Library解决了:

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

子类:

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

:victory:

puras 发表于 2010-12-17 23:50:07

可惜啊。
它只能重写原有的类。
而不能自己创建新的类。。。
比如MK_Controller,你再写别的Controller就没戏了。5555555

Hex 发表于 2010-12-18 11:07:18

是的 CI 不支持多级控制器继承,只能从 MY_Controller 继承。
等新版 CI 吧。

puras 发表于 2010-12-20 09:00:57

回复 4# Hex

:dizzy::dizzy::dizzy:

zfm1988 发表于 2010-12-23 16:25:38

哎,上次我也有这个问题,最后直接修改controller文件,添加了几个函数!!

puras 发表于 2010-12-23 23:31:18

回复 6# zfm1988


   可是有些函数是在好几个Controller里都要用到的。为Controller中的每个方法设置一些初始值。
没有基类,真的很不方便。哈。
页: [1]
查看完整版本: 能否创建一个自己的Controller基类?