我将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的新解决方案是什么?我看过较早的帖子,但似乎都没有帮助
谢谢!
答案 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));
我已经做了上述更改,因此它不再是一个障碍,我仍然想把它放在这里,以防万一有人遇到完全相同的问题
感谢您的帮助