CodeIgniter - 模型加载但不能使用?

时间:2010-02-04 19:45:07

标签: php codeigniter autoloader

确定。所以我正在使用CI的网站上工作。这是我的控制器的结构:

class MY_Controller extends Controller
class User extends MY_Controller
class User_Model

因此,我在User控制器的构造函数中加载User_Model。我知道它已正确加载,因为我试图从User_Model打印一些东西,它工作得很好。但是,当我使用User控件的User_Model中的一个函数时,它开始给我错误。这是我收到的错误:

  

未定义属性:User :: $ User_Model

有人有任何想法吗?

这是扩展控制器

class MY_Controller extends Controller {
    public function __construct() {
      parent::Controller();
    }
}

这是控制器

class User extends MY_Controller {
    public function __construct() {
      parent::__construct();
      $this->load->model('user_model');
      echo $this->user_model->validate_user('hartantothio');
    }
}

这是User_model

class User_model extends Model {
    public function __construct() {
        parent::Model();
    }        
    public function validate_user($user, $pass = '') {
        return '123';
    }
}

4 个答案:

答案 0 :(得分:2)

$this->load->model('user_model');

应该阅读

$this->load->model('User_model');

模型名称区分大小写!

答案 1 :(得分:0)

您是否使用语法调用该函数,$ this-> User_Model-> function_name()?

我也知道我过去也遇到过区分大小写的问题。

答案 2 :(得分:0)

好吧,通过获取MY_Controller并直接扩展Controller的用户控制器,可以解决问题。

答案 3 :(得分:0)

你把My_Controller文件放在哪里?我把它放在system/application/libraries中并且没有任何问题。另外,我使用PHP4构造函数的方式来编写它,而不是__constructor

class MY_Controller extends Controller {

  var $is_ajax_request = '';
  var $is_ajax_form = '';

  function MY_Controller()
  {
    parent::Controller();
    //initialize
    $this->is_ajax_request = ($this->input->server('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest');
    $this->is_ajax_form = ($this->input->post('ajax') == 'ajax');
    log_message('debug', "MY_Controller Class Initialized");
    //do extra stuffs here
    //...
  }

}