2011-12-09 28 views
1

我在嘗試在codeigniter中實現一個非常簡單的模型控制器時收到以下錯誤。我對這個框架很陌生,但據我所知,這應該可行。CodeIgniter加載模型時未定義的屬性

我也試過自動加載模型。我自動加載數據庫庫。

Message: Undefined property: User::$user_model 

Fatal error: Call to a member function get_user() on a non-object 

模型

class User_model extends CI_Model 
{ 

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


function get_user() 
{ 
    return "test"; 
} 


} 

控制器

class User extends CI_Controller 
{ 

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

function index() 
{ 
    $this->load->model('User_model'); 

    $data['value'] = $this->User_model->get_user(); 

    $this->load->view('user_edit', $data); 
} 
} 

感謝

+0

奇怪的是,這應該在理論上工作。模型的文件名是什麼,它是'user_model.php'? –

+0

是的,它是user_model.php,謝謝。 – leejmurphy

回答

0

我想我已經找到了問題。我在我的用戶控制器中有一些額外的setter方法,我一直在使用它,不認爲它們會成爲問題。

public function __set($key, $value) 
{ 
    // Check to see that the requested attribute exists and then assign the value 
    if (property_exists($this, $key)) 
    { 
     $this->$key = $value; 
    } 
} 

事實證明我需要帶走下劃線之一,因爲codeigniter不喜歡它。

public function _set($key, $value) 

我應該真的包括完整的課程,但我試圖保持它儘可能簡單!

2

只是使用一些像這樣的事情,$this->load->model('user_model');不使用$this->load->model('User_model');,並確保你有相同的名稱,當像user_mode.php型號名稱,像class User_model extends CI_Model(){}類的,所以當你從控制器調用它使用小寫看起來像你的型號名稱用戶$this->load->model('user_model')

相關問題