我正在进行注册&在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
这是为什么?谢谢!
答案 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');
}
}
的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向后兼容功能。
所以解决方法是执行以下操作之一
public function signin()
的定义更改为其他内容__construct
方法。我会使用第一个解决方案。可以像
一样轻松完成public function sign_in()
{