Codeigniter 3:未定义的属性:Controllername :: $ load

时间:2017-10-01 11:52:54

标签: php codeigniter

我正在进行注册&在CI3中登录系统。

我的控制器是根据CI用户指南制作的:

class Signin extends CI_Controller {

 public function index()
 {
    $this->load->view('signin');
 }

 public function signin()
 {  
    $this->form_validation->set_rules('email', 'Email', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');
    if ($this->form_validation->run())
    {
        echo "You are in";
    }
    else
    {
        echo validation_errors();
    }
 }
}

我已经在 autoload.php 中加载了库和帮助器:

$autoload['libraries'] = array('database', 'form_validation', 'user_agent', 'session');

$autoload['helper'] = array('url', 'form');

然而我收到了这个错误:

Message: Undefined property: Signin::$load
Filename: controllers/Signin.php

这是为什么?谢谢!

3 个答案:

答案 0 :(得分:2)

您需要控制器Signin的构造函数才能使用函数signin(同名):

class Signin extends CI_Controller{
    public function __construct()
    {
        parent::__construct();
    }
    public function signin()
   { 
      // your code
   }
   public function index()
   {
      $this->load->view('signin');
   }
}

请参阅有关reserved method names

的CI手册

答案 1 :(得分:0)

您只需在Signin控制器中添加构造函数。

class Signin extends CI_Controller {

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

    public function index()
    {
        $this->load->view('signin');
    }

    public function signin()
    {  
        $this->form_validation->set_rules('email', 'Email', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');
        if ($this->form_validation->run())
        {
            echo "You are in";
        }
        else
        {
            echo validation_errors();
        }
    }
}

答案 2 :(得分:0)

问题是你有一个与类同名的类方法。

根据文件

  

您也应该永远不会有一个与其类名相同的方法。如果你这样做,并且在同一个类中没有__construct()方法,那么你的Index :: index()方法将作为类构造函数执行!这是PHP4向后兼容功能。

所以解决方法是执行以下操作之一

  1. public function signin()的定义更改为其他内容
  2. 在课程中添加__construct方法。
  3. 更改班级名称
  4. 我会使用第一个解决方案。可以像

    一样轻松完成
    public function sign_in()
    {