如果表单验证失败

时间:2013-01-11 13:08:16

标签: forms codeigniter

如果表单验证失败,我想将人们重定向到某个页面。但是,我无法弄清楚如何。

如果我在下面的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');
}

我怎样才能做到这一点?

1 个答案:

答案 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()应该返回一个空字符串,如果没有提交,但它可能是一个空值或一个假(抱歉不记得我的头顶)。