2012-09-25 105 views
0

在codeigniter站點發生錯誤時出現了一個非常奇怪的問題。儘管定義了方法,但未定義的方法

Fatal error: Call to undefined method Document::get_by_module() 

的代碼引起這種情況的線(在控制器中)爲:

$this->document_type->get_by_module('module1'); 

控制器的構造:

function __construct(){ 
    parent::__construct(); 
    $this->load->model('document','document_type'); 
} 

的DOCUMENT_TYPE類看起來像這樣

class Document_type extends CI_Model { 
    function Document_type() { 
     parent::__construct(); 

    }  
    function get_by_module($prefix) { 
     // code 
    } 
} 

主要問題我看到的是Document::是班級,但應該是Document_type。我沒有看到它應該在文檔類中尋找該功能的理由。

如果我從控制器構造函數中刪除「文檔」類的加載,錯誤消失(但其他事情會中斷)。

不知道如何可能發生這樣的事情。

+0

當你不加載'document'時會發生什麼? –

+0

該代碼的作品,但我後來在其他網頁/其他頁面的其他地方得到錯誤。 – Damon

+0

我很清楚這一點。這就是爲什麼我對這個錯誤感到困惑。 – Damon

回答

1

看起來您正在加載錯誤的模型文件。該生產線

$this->load->model('document','document_type'); 

指的是沿着線的東西:我找了一個名爲「文檔」創建一個實例並$this->document_type下把模型。 (see the 4th example

看起來你有一個Document模式,使負載成功,但如果你不想重命名實例$this(控制器實例)下把你不應該在$this->load->model()線使用第二個參數。

簡單地寫$this->load->model('document_type');

+0

太神奇了!哈哈.. – Damon