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("....

where正在崩溃,因为没有"db"。CodeIgniter 3的新解决方案是什么?我看到过旧的帖子,但似乎没有一个能帮助我摆脱

谢谢!

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

公共函数__construct(({

parent::__construct();

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

}

问题已解决,问题是由于我的控制器扩展了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有关的众多问题之一。另一个大问题是文件名的大写字母和调用的大写字母,所以严格地说,我必须在我的控制器中大写调用(将"login"改为"login"(:

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

我已经做了上述更改,所以这不再是一个拦截器,但我想把它放在这里,以防有人遇到完全相同的问题

感谢大家对的帮助

最新更新