2013-06-21 55 views
4

我已經看到了幾個不同的帖子,但沒有一個人似乎爲我工作。Codeigniter擴展自定義模型產生致命錯誤

我有一個擴展CI_Model一個類:

class Users_Model extends CI_Model { 

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

然後:

class Students_Model extends Users_Model { 

private $_students; 

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

     $this->_students = $this->get_students(); 
} 

但是我再收到此錯誤信息:

PHP Fatal error: Class 'Users_Model' not found in /Users/rosswilson/Localhost/thedrumrooms/dreamweaver/ci/application/models/students_model.php 

我用require_once來將文件包含在擴展類中並且它可以工作。 這是做到這一點的最佳做法/正確方法嗎?

謝謝。

回答

5

CI中的標準做法是在application/core內部創建一個名爲MY_Model.php,MY_的基本模型取決於配置中定義的內容。

然後在你的MY_Model.php裏面,你可以在該文件中定義許多類,這些類可以在你的模型中擴展,基本上CodeIgniter的加載模型在這個路徑和文件中查找定義的類。

但是,如果你想使用require_once您必須使用APPPATH(應用程序路徑)index.php定義。但是您的自定義模型仍然需要延長CI_Model,因爲它使用CI模型的核心類,否則您的模型將無法工作。

require_once APPPATH.'/models/test.php';

加入的備註:

謝謝@dean還是指出了這一點。在MY_Model.php文件裏面有必須MY_Model class那擴展了CI_Model

+0

看來,不像擴展控制器那裏必須是MY_Model.php文件中的MY_Model類 –

0

將文件users_model.php放入核心目錄。然後嘗試將Users_Model繼承到Students_Model。

1

你確定Users_model是在加載Students_model之前加載的嗎? 你可以在autoload.php配置文件中做到這一點。

相關問題