2012-09-25 59 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