CodeIgniter:调用模型时的未定义属性

时间:2018-07-19 05:38:16

标签: codeigniter model runtime-error hmvc hmvc-codeigniter

我将CodeIgniter 3与HMVC一起使用。

有人知道我为什么会出现以下错误

    Severity: Notice
    Message: Undefined property: Login::$login_model

在下面的第二行。我清楚地称呼该模型,但出于某种奇怪的原因,它未正确链接

    $this->load->model('auth/login_model');
    $response = $this->login_model->attempt($username, sha1($password));

然后该模型非常基本:

    <?php
    class Login_model extends CI_Model 
    {
        public function attempt($user, $pass) 
        {
        ... 

现在,如果我使用一个可以工作的对象,但是在很多地方,包括我所在的地方,我都会遇到相同的问题

    $this->db->select("....

哪里崩溃了,因为没有“ db”。 CodeIgniter 3的新解决方案是什么?我看过较早的帖子,但似乎都没有帮助

谢谢!

2 个答案:

答案 0 :(得分:0)

只需尝试将此代码放入控制器中即可:

公共函数__construct(){

    parent::__construct();


    $this->load->model('Login_model'); // load model 


}

答案 1 :(得分:0)

问题已解决,问题是由我的控制器扩展了CI_Controller而不是MX_Controller引起的。因此,更改

       class Login extends CI_Controller 

       class Login extends MX_Controller 

解决了这个问题。

我花了一些时间通过调试thirdparty / MX / Loader.php来弄清楚,但是一旦我看到它正在寻找MX_Controller类型,我进行了更改,并且效果很好。

此问题是与从CI 2迁移到CI 3以及使用Wiredesignz的HMVC有关的众多问题之一。另一个大问题是文件名是大写的,调用时是大写的,因此严格地讲这个问题,我不得不在控制器中将调用大写(将“登录”更改为“登录”):

     $this->load->model('auth/Login_model');
     $response = $this->Login_model->attempt($username, sha1($password));

我已经做了上述更改,因此它不再是一个障碍,我仍然想把它放在这里,以防万一有人遇到完全相同的问题

感谢您的帮助