大家好,这是我的第一个CI项目。
我的模型中有一个简单的表单验证函数。
function verify_login()
{
//This method will have the credentials validation
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
var_dump($this->form_validation->run());
die;
if ($this->form_validation->run() == FALSE) {
//Field validation failed. User redirected to login page
$this->load->view('login_view');
} else {
//Go to private area
redirect('home', 'refresh');
}
}
字符串
当我尝试将变量从控制器传递到模型中的函数时,变量会被接收到,但不会被处理。
有人能给我点启发吗?谢谢。
4条答案
按热度按时间ztigrdn81#
在模型中进行表单验证是很好的。但是您希望验证返回True或False到控制器。而不是调用视图。
字符串
另一件需要考虑的事情是--通常人们知道他们的用户名,但是却把密码搞混了。所以如果你分别检查他们,你可以相应地调整错误消息。如果你检查用户名,但是没有结果--你不需要检查密码,你可以在错误消息中告诉他们没有这个名字的用户。
lo8azlld2#
我对你最大的建议是不要在你的模型中做这样的验证,如果你在你的模型中验证,它需要直接针对数据库值而不是表单。
请让我知道,如果这解决了你的问题,如果没有,请评论,我会编辑我的答案。
更新:请忽略上面的一些,因为我是脱离理论而不是事实:)
我必须深入研究CI核心,才能很好地了解这是什么问题。您的代码本身看起来还不错。我唯一能看到的是,您的回调可能不存在于您的模型中,而只存在于您的控制器中。与下面的观点相呼应,我不认为这是对模型的良好使用。
关于验证的文档
aemubtdh3#
字符串
ymzxtsji4#
如果你想在你的模型中使用Codeigniter的表单验证库,并想使用回调;请按照以下步骤操作:
1.首先,你必须通过数组分隔规则。
1.而且比你可以使用匿名函数的伎俩。
示例如下:
字符串