CodeIgniter - Модель загружена, но не может быть использована? - PullRequest
1 голос
/ 04 февраля 2010

Хорошо. Поэтому я работаю над сайтом, используя CI. Вот структура моего контроллера:

class MY_Controller extends Controller
class User extends MY_Controller
class User_Model

Итак, я загружаю User_Model внутри конструктора контроллера пользователя. Я знаю, что он загружен правильно, потому что я пытался что-то напечатать из User_Model, и это работало просто отлично. Тем не менее, когда я использую одну из функций в 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');
    }
}

Это пользовательская модель

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

Ответы [ 4 ]

2 голосов
/ 04 июня 2011
$this->load->model('user_model');

следует читать

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

Имена моделей чувствительны к регистру!

0 голосов
/ 06 февраля 2010

Что ж, взяв MY_Controller и расширяя пользовательский контроллер непосредственно из контроллера, это решает проблему.

0 голосов
/ 08 февраля 2010

Куда вы положили 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
    //...
  }

}
0 голосов
/ 04 февраля 2010

Вы вызываете функцию, используя синтаксис, $ this-> User_Model-> function_name ()?

Я также знаю, что в прошлом у меня были проблемы с чувствительностью к регистру.

...