如果表单验证失败,我想将人们重定向到某个页面。但是,我无法弄清楚如何。
如果我在下面的REDIRECT HERE评论中重定向人,那么当它加载表格并导致无限循环时,它也会重定向。
public function create() {
$this->form_validation->set_rules('email_adress', 'E-mail', 'required|valid_email|is_unique[users.email_adress]');
if ($this->form_validation->run() !== FALSE) {
// PASSED
}
else {
// REDIRECT HERE
}
$this->load->view('user_register_view');
}
我怎样才能做到这一点?
答案 0 :(得分:0)
你会像这样重定向:
redirect('insert_URI_here');
或者,如果您将它传递给同一个控制器中的另一个方法,您可以这样做:
$this->method_name();
但是,如果您只是将其删除到else语句中,则不会加载user_register_view,因为$ this-> form_validation-> run()将在验证错误或未提交表单时返回false。
您需要做的是添加另一项检查以查找验证错误。如果验证失败并且没有验证错误,则表示您的表单尚未提交。
所以你可以这样做:
public function create() {
$this->form_validation->set_rules('email_adress', 'E-mail', 'required|valid_email|is_unique[users.email_adress]');
if(($this->form_validation->run() == FALSE) && ($this->form_validation->error_string() == ''));
//form not submitted yet
$this->load->view('user_register_view');
else if ($this->form_validation->run()) {
// PASSED
} else {
//Validation errors
redirect('insert_URI_here');
}
}
你将不得不玩它。我认为$ this-> form_validation-> error_string()应该返回一个空字符串,如果没有提交,但它可能是一个空值或一个假(抱歉不记得我的头顶)。