问题
i’m using the Codeigniter.2.1.3 for a website, so i need to extend the CI_Controller so i can add a method to be executed with all controllers so i did what’s in the user_guide:
creating a file named MY_Controller.php in the application/core folder the creating in it MY_Controller Class that extends the CI_Controller, the changing my regular controller to extend the MY_controller like this: MY_controller.php:
class MY_Controller extends CI_Controller{
protected $page;
# Constructor
function __construct (){
parent::__construct();
#code shared with all controllers
}
public function get_page(){
#code to get_the right page here
}
}
regular controller named Regular.php:
class Regular extends MY_Controller{
public function __construct(){
parent::__construct();
}
public function index(){
$this->get_page();
}
}
but the following error keep appearing:
Fatal error: Class ‘MY_Controller’ not found in /var/www/immo/CodeIgniter_2.1.3/application/controllers/regular.php on line 2
回答1:
You would need to include your MY_Controller
class or auto-load it. I suggest you auto-load it by adding the following to your application/config/config.php
file.
function __autoload($class)
{
if (strpos($class, 'CI_') !== 0)
{
if (file_exists($file = APPPATH . 'core/' . $class . EXT))
{
include $file;
}
}
}
回答2:
Make sure the filename is perfectly cased. Linux server is case-sensitive. So if the class name is My_Controller then the name of the file should be My_Controller.php
回答3:
$config['subclass_prefix'] = "MY_"
check that in config.php
and of course you should use it in Controller Name Like MY_Controller.php
and Named "class MY_Controller...."
回答4:
Late with this answer, but I got the "Fatal error: Class ‘MY_Controller’ not found" error when I had a controller (php) file by the same name at the web root instead of the application/controllers directory. Don't know how it got there, actually, but the problem went away when I deleted it.
回答5:
in config/config.php
/* load class in core folder */
function my_load($class) {
if (strpos($class, 'CI_') !== 0) {
if (is_readable(APPPATH . 'core' . DIRECTORY_SEPARATOR . $class . '.php' )) {
require_once (APPPATH . 'core' . DIRECTORY_SEPARATOR . $class . '.php');
}
}
}
spl_autoload_register('my_load');
来源:https://stackoverflow.com/questions/13483677/codeigniter-my-controller-not-found