0

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

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

我怎样才能做到这一点?

4

1 回答 1

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

于 2013-01-11T13:26:58.317 回答