Codeigniter表单验证,哪个规则触发?

时间:2014-04-01 11:51:48

标签: php codeigniter validation

form_validation->run()返回FALSE时,我需要知道哪条规则没有通过验证测试。
我知道我可以回显form_error()validation_errors(),但这需要在加载视图之前完成。 控制器需要根据哪个输入未通过验证而采取不同的行动。

示例:

public function index()
{
    $this->load->library('form_validation');

    $this->form_validation->set_rules('username', 'Username', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');

    if ($this->form_validation->run())
    {
        $this->load->view('something');
    }
    else
    {
        //check which rule didn't pass and act accordingly
    }
}

我尝试在empty语句中使用form_error('something')上的if,但这会返回错误,因为empty没有功能。
另请注意,我无法更改错误分隔符,因为它们在脚本的其他位置使用。

如何在不回显validation_errors()的情况下检查触发了哪条规则?

2 个答案:

答案 0 :(得分:1)

您可以使用错误() -

public function index()
{
    $this->load->library('form_validation');

    $this->form_validation->set_rules('username', 'Username', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');

    if ($this->form_validation->run())
    {
     $this->load->view('something');
    }
    else
    {
         print_r($this->form_validation->error());
    }
}

答案 1 :(得分:0)

使用特定字段显示错误消息 form_error('用户名&#39)