CodeIgniter基本控制器扩展

时间:2012-03-13 15:17:16

标签: php codeigniter

我想通过自己扩展基本控制器。这是我放入MY_Secure.php

的文件application/libraries的代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

Class MY_Secure extends CI_Controller {
  public function __construct() {
    parent::__construct();
    if(!$this->session->userdata('status') == 'admin') {
        $data['message'] = '<p class="error">You shold login in admin area</p>';
        $this->load->view('admin/login', $data);
    }
  }
}
?>

这是application/controllers/category.php

中的控制器
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Category extends MY_Secure {

function __construct()
{
    parent::__construct();
}

 public function index()
{
 $data['login'] = $this->session->userdata('login');
 $data['status'] = $this->session->userdata('status');

 $this->load->model('categories_model');
 $data['main_categories'] = $this->categories_model->get_main_categories();

 $this->load->view('admin/headers/main', $data);
 $this->load->view('admin/category');
 $this->load->view('admin/footer/main');
}
?>

但是我有一个错误Fatal error: Class 'MY_Secure' not found in Z:\home\ci.local\www\application\controllers\admin\category.php on line 3我怎样才能避免这个错误?我做错了什么?

5 个答案:

答案 0 :(得分:6)

http://codeigniter.com/forums/viewthread/182186/#862394

...所以把 MY_Secure.php MY_Controller.php放在application / core中

答案 1 :(得分:1)

没有必要条件保存或命名为MY_Controller。如果您愿意,可以将其命名为:Mysite_Controller

请将您的课程放在application/core文件夹中,然后从您的控制器课程中扩展此课程。

但为了使其正常工作,您需要更改配置文件值:

$config['subclass_prefix'] = 'Mysite_'; // default  it is 'MY_'

答案 2 :(得分:0)

您无法为扩展控制器“MY_Secure”命名,您必须将其命名为“MY_Controller”。然后扩展它

class Category extends MY_Controller

答案 3 :(得分:0)

我认为问题是MY_Secure.php的位置。如果你没有在配置中更改它,则MY_前缀有效。

MY_Secure类必须保存在Applications Core文件夹中,才能在CodeIgniter 2.O中使用,而不是在Libraries文件夹中。

答案 4 :(得分:0)