CodeIgniter - 可以用任何其他名称创建自己的控制器

时间:2014-03-07 10:34:43

标签: php codeigniter codeigniter-2

我在 Application / core 中创建了名为“ MY_Controller.php ”的自定义控制器,并通过应用程序控制器继承成功调用。

//application/core
class MY_AdminController extends CI_Controller {
function __construct() {
        parent::__construct();            
    }
 }

//application/controllers
class User extends MY_AdminController {
    public function __construct(){
          parent::__construct();
    }
}

工作正常。我刚刚将我的文件名从“MY_Controller.php”更改为 MY_AdminController.php 并且遵循相同的类名,但是它引发了以下错误,

Fatal error: Class 'MY_AdminController' not found

根据文档,每当你创建一个带有 MY _ 前缀的类时,CodeIgniter Loader类会在加载核心库后加载它,那么为什么它会抛出错误...... !!!

5 个答案:

答案 0 :(得分:2)

转到config.php并更改

$config['subclass_prefix'] = 'MY_'; to $config['subclass_prefix'] = 'MY_Admin';

答案 1 :(得分:1)

扩展Patel, 问题是MY_是原始核心文件的前缀。

控制器,模型,视图等。

MY_将用于寻找控制器的名称,例如,MY_controller搜索CI_controller。

您无法使用MY_prefix加载随机名称。您使用MY_扩展已存在的名称。

答案 2 :(得分:0)

我认为问题出在班级名称上,您可能没有将班级名称从MY_Controller更改为MY_AdminController

答案 3 :(得分:0)

您可以使用自定义类。但CI仅在配置文件中加载具有类前缀的类(例如 MY_ )。所以我解释了它是如何工作的,并创建了一个自动加载类的解决方法。你可以在https://stackoverflow.com/a/22125436/567854找到它。

希望这会有所帮助:)

答案 4 :(得分:0)

如果要包含核心文件夹中的所有文件。然后在config.php文件的末尾写下面的代码。路径到文件是application / config / config.php

function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0)
    {
         @include_once( APPPATH . 'core/' . $class . EXT );
    }
}

通过使用它,您可以创建多个类。