1

我创建了一个名为Role_Admin并设置配置前缀的核心控制器

$config['subclass_prefix'] = 'Role_';

这是文件夹Role_Admin.php中的代码core

class Role_Admin extends CI_Controller {
    function __construct() {

    }
}

在我写的时候在控制器文件夹中

class admin extends Role_Admin { ... }

我明白了

致命错误:找不到类“Role_Admin”

我正在做的事情有问题。

编辑:(我创建了一个更好的快速修复,您创建的任何新核心文件只需扩展 MY_Controller。然后在您的控制器目录中,您可以扩展您创建的任何核心控制器

class MY_Controller extends CI_Controller {

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

            //include custom core classes
            $core_path = DOCUMENT_ROOT . '/application/core';
            $this->load->helper('file');

            foreach(get_filenames($core_path) as $file) {
                if ($file != 'MY_Controller.php') {
                    if(file_exists($file)) {
                        include_once($file);
                    }
                }
            }
        }

}
4

1 回答 1

1

您的设置$config['subclass_prefix']很好,但您的文件名不正确。CI 正在寻找文件Role_Controller.php,而不是Role_Admin.php.

有一种更简单的方法可以做到这一点,虽然它可能看起来是一个黑客,但它是完全合法的。回到MY_前缀 create MY_Controller.php,然后在该文件中定义您要使用的控制器类。实际上,您甚至不需要MY_Controller上课。例子:

// application/core/MY_Controller.php
class Role_Admin extends CI_Controller {}
class AnotherClass extends Role_Admin {}
class SomeOtherClass extends AnotherClass {}

所有这些类都可供您的控制器扩展。

于 2012-11-09T17:37:05.760 回答