【问题标题】:custom core controller not found未找到自定义核心控制器
【发布时间】:2012-11-09 17:10:44
【问题描述】:

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

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

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

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);
                    }
                }
            }
        }

}

【问题讨论】:

  • 你把这个控制器放在哪里了,你用的是哪个版本?
  • 您将Role_Admin.php 保存在application/core/ 而不是system/core/,对吧?
  • air4x,是的 .... reheel 我现在使用的是最新的

标签: php codeigniter


【解决方案1】:

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

有一种更简单的方法可以做到这一点,虽然它可能看起来是一个 hack,但它是完全合法的。回到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 {}

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

【讨论】:

  • 在一个文件中包含所有这些类?
  • 是的,你可以。我就是这样做的,但我的基本控制器非常精简。
  • 我的回答能满足你的问题还是还有问题? “未找到自定义核心控制器”的问题是您需要Role_Controller.php,而不是Role_Admin.php.,如果不是这样,请告诉我。你的类的设计是一个单独的问题。
猜你喜欢
  • 2018-11-17
  • 2014-03-01
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多