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



我已经创建了自定义控制器,称为" my_controller.php " application/core 中,并通过应用程序控制器继承而成功调用。

//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

根据文档,每当您使用我的_ 前缀创建类时,CodeIgniter Loader类都会在加载Core库后加载此类,那么为什么要投掷错误... !!!

转到您的config.php并更改

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

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

控制器,模型,视图等

my_将用于寻找控制器的名称,例如,my_controller搜索ci_controller。

您不能使用MY_PREFIX加载随机名称。您使用my_扩展已经存在的名称。

我认为问题是类名称,您可能没有将类名称从 MY_Controller更改为 MY_AdminController

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

希望这会有所帮助:)

如果要包含核心文件夹中的所有文件。然后在config.php file.path to file是应用程序/config/config.php

的末尾写下以下代码。
function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0)
    {
         @include_once( APPPATH . 'core/' . $class . EXT );
    }
}

通过使用此功能,您可以创建多个类。

最新更新