CodeIgniter基本控制器扩展


CodeIgniter basic controller extends

我想自己扩展基本控制器。这是我放在application/libraries 中的文件MY_Secure.php的代码

<?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我该如何避免这个错误?我做错了什么?

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

所以在应用程序/核心中放入MY_Secure.phpMY_Controller.php

没有保存或命名为MY_Controller的必要条件。如果你愿意,你可以把它命名为:Mysite_Controller

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

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

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

您不能将扩展控制器命名为'MY_Secure',必须将其命名为'MY_Controller'。然后扩展

class Category extends MY_Controller

我认为问题出在MY_Secure.php的位置上。如果您没有在配置中更改MY_前缀,那么它就可以工作。

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

Phil Sturgeon在这方面有一篇非常好的博客文章:http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY