CodeIgniter - 在非对象上调用成员函数model()

11 浏览
0 Comments

CodeIgniter - 在非对象上调用成员函数model()

我在视图中创建了一个登录表单。然后在我的控制器中,我尝试加载我的模型,但似乎没有加载成功。在stackoverflow上查找了一些答案,几乎每个人都说要自动加载模型,导入数据库库等等。我已经做到了,但我仍然得到错误信息:致命错误:在C:\\ xampp \\ htdocs \\\\ project \\ application \\ controllers \\ login.php的第11行中调用了一个非对象的成员函数model() A PHP Error was encountered Severity:Notice Message:Undefined property:Login :: $load Filename:controllers / login.php Line Number:11。\n登录视图\n“电子邮件”,\'name\' =>“loginEmail”);\n$loginPassword = array(\'placeholder\' =>“密码”,\'name\' =>“loginPassword”);\n$loginSubmit = array(\'name\' =>“loginSubmit”,\'class\' =>“btn”,\'value\' =>“登录”);\n$loginForgot = array(\'name\' =>“loginForgot”,\'class\' =>“link”,\'value\' =>“忘记密码?”);\necho form_open(\'login / login\',array(\'class\' =>\'grid-100 formc\'));\necho form_input($loginEmail);\necho form_password($loginPassword);\necho form_submit($loginSubmit);\necho form_submit($loginForgot);\n?>\n登录控制器\nload->view(\'templates / template\',$data);\n }\n function login(){\n $this->load->model(\'login_model\');\n $query = $this->login_model->validate();\n if($query){\n $data = array(\n \'username\' => $this->input->post(\'loginEmail\'),\n \'loggedin\' => true\n );\n $this->session->set_userdata($data);\n redirect(\'profile / myprofile\');\n }\n }\n}\n?>\n登录模型\ndb->where(\'email\',$this->input->post(\'loginEmail\'));\n $this->db->where(\'password\',md5($this->input->post(\'loginPassword\')));\n $query = $this->db->get(\'tbl_users\');\n if($query->num_rows == 1){\n return true;\n }\n }\n}\n?>\nautoload.php\n$autoload [\'libraries\'] = array(\'database\',\'session\');\n我在这里还缺少了什么?

0
0 Comments

CodeIgniter是一个流行的PHP框架,被广泛用于构建Web应用程序。在使用CodeIgniter时,有时可能会遇到一个错误,即“Call to a member function model() on a non-object”。本文将探讨该问题的原因和解决方法。

根据CodeIgniter文档,如果在任何Controller中使用构造函数,必须在构造函数中添加以下代码行:parent::__construct();。这是为了确保正确初始化Controller对象。

在CodeIgniter中,Controller是用于处理用户请求和执行相应操作的类。构造函数是Controller类的一部分,用于初始化Controller对象。如果在构造函数中没有调用parent::__construct();,则会出现“Call to a member function model() on a non-object”错误。

这个错误的原因是,当没有调用parent::__construct();时,Controller对象没有正确初始化,因此无法调用Controller类的成员函数model()。

解决这个问题的方法很简单,只需在构造函数中添加parent::__construct();即可。这样可以确保Controller对象正确初始化,并且可以调用model()函数。

下面是一个示例代码,演示了如何正确使用构造函数和解决“Call to a member function model() on a non-object”错误:

class MyController extends CI_Controller {
    public function __construct() {
        parent::__construct(); // 调用父类的构造函数,确保正确初始化Controller对象
    }
    public function myMethod() {
        $this->load->model('MyModel'); // 使用model()函数加载Model
        // 执行其他操作
    }
}

在上面的示例代码中,我们首先在构造函数中调用了parent::__construct();,然后在myMethod()函数中使用model()函数加载了一个Model。这样就可以避免“Call to a member function model() on a non-object”错误的出现。

总结一下,当在CodeIgniter中遇到“Call to a member function model() on a non-object”错误时,原因是Controller对象没有正确初始化。为了解决这个问题,只需在构造函数中添加parent::__construct();即可。这样可以确保Controller对象正确初始化,并且可以调用model()函数。希望本文对你理解和解决这个问题有所帮助。

0
0 Comments

CodeIgniter - Call to a member function model() on a non-object问题的原因是在登录控制器中没有构造函数。解决方法是添加构造函数并调用父类的构造函数。

在CodeIgniter中,控制器是应用程序的重要组成部分,用于处理请求和生成响应。控制器中的构造函数是在控制器实例化时自动调用的方法。构造函数通常用于初始化控制器的一些属性或加载必要的库和模型。

然而,在给定的问题中,登录控制器缺少构造函数。这导致了错误信息"Call to a member function model() on a non-object"。这个错误发生在尝试加载模型时。

要解决这个问题,需要在登录控制器中添加构造函数,并调用父类的构造函数。下面是解决方法的代码示例:

public function __construct() {
    parent::__construct();
}

在上面的代码中,构造函数被添加到登录控制器中,并通过`parent::__construct();`调用了父类的构造函数。这样就确保了控制器实例化时会调用父类的构造函数,从而避免了"Call to a member function model() on a non-object"错误的出现。

添加构造函数后,登录控制器应该类似于以下示例:

class Login extends CI_Controller {
    public function __construct() {
        parent::__construct();
    }
    
    // 其他控制器方法...
}

通过添加构造函数并调用父类的构造函数,我们可以解决"Call to a member function model() on a non-object"问题,并确保模型可以正确加载。希望这篇文章对您有所帮助!

0