2015-04-23 37 views
0

我在代碼點火器的Application\core目錄下創建了一個模型Admin_Model。我把它的所有基本數據庫操作。當我嘗試擴展在Application\model目錄下的模型時,它會引發錯誤。致命錯誤:在codeigniter中找不到的類

Fatal error: Class 'Admin_Model' not found in <path to root>/application/models/new_model.php on line 3

我應該錯過任何配置?

+0

提交完整的控制器和模型代碼 – Saty

+0

Admin_Model模型文件夾 –

+0

嗨@Random中創建我沒有使用require_once或任何其他代碼。你想要什麼額外的信息?請註明,我會給你。 –

回答

0

謝謝大家的努力。 我找到了解決方案。

默認情況下CodeIgniter在其配置文件中有一個設置。

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

我只是用'Admin_'替換'MY_'一切正常。

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

更合適的解決方案是

  1. 認沽類文件中的庫文件夾
  2. 添加以下代碼config.php文件

    function __autoload($classname) 
    { 
    if(strpos($classname,'CI_') == 0) 
    { 
        $file = APPPATH.'libraries/'.$classname.'.php'; 
        if(file_exists($file)) 
        { 
         @include_once($file); 
        } 
    } 
    } 
    

這就是全部

1

擴展核心類

如果你需要做的就是添加一些功能,以現有的庫 - 也許增加一個或兩個功能 - 那麼它重寫自己更換整個庫。在這種情況下,最好簡單地擴展這個類。擴展類幾乎與替換類有一些例外:

類聲明必須擴展父類。 您的新班級名稱和文件名必須以MY_作爲前綴(此項目是可配置的,見下文)。 例如,擴展一個本地模型類,你應該建立一個應用程序/核心文件/ MY_Model .php和聲明你的類:

class MY_Model extends CI_Model { 

} 

注意:如果你需要使用一個構造函數您的課程確保您擴展父構造函數:

class MY_Model extends CI_Model { 

    function __construct() 
    { 
     parent::__construct(); 
    } 
} 
+0

如果我將我的模型命名爲「MY_Model」,但您的答案不錯,但不能接受顯示錯誤。即使我聲明我的模型「MY_Admin_Model」也顯示錯誤。 –

+0

核心模型僅擴展現有模型,它們放置在文件夾** ../system/core/**中 - 這樣的Lang,Input,Model ... Admin_Model不是核心模型,因此也是錯誤。 – ferganze

1

如果您仍然遇到問題__autoload使用類庫也可能會有所幫助。當我在控制器上使用類庫來做父類時,它適用於我。

PHP 5 >= 5.1.2, PHP 7

這是在應用mycode的/ config.php文件

spl_autoload_register(function ($classname){ 
    if(strpos($classname,'CI_') == 0){ 
      $file = APPPATH.'libraries/'.$classname.'.php'; 
      if(file_exists($file)){ 
       @include_once($file); 
      } 
    } 
}); 
相關問題