找不到自定义核心控制器

时间:2012-11-09 17:10:44

标签: php codeigniter

我创建了一个名为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);
                    }
                }
            }
        }

}

1 个答案:

答案 0 :(得分:1)

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

有一种更简单的方法可以做到这一点,虽然它看起来像是一个黑客,但它是完全合法的。返回MY_前缀,创建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 {}

所有这些类都可供控制器使用。