CodeIgniter基于条件的字段验证

时间:2011-05-18 11:18:39

标签: codeigniter validation conditional-statements

如果名为sendEmail的第一个字段有value ="Yes",则其他字段将被验证... 我在配置文件夹中的set_rules文件中定义了此form_validation.php

$config = array(
array(
      'field'   => 'sendEmail',
      'label'   => 'Send Email',
      'rules'   => 'required'
     ),
     array(
       'field'   => 'email',
       'label'   => 'Email',
       'rules'   => 'required'
     ),
     array(
       'field'   => 'first_name',
       'label'   => 'First Name',
       'rules'   => 'required'
     ),   
    array(
      'field'   => 'last_name',
      'label'   => 'Last Name',
      'rules'   => 'required'
    )
);

emailfirst_namelast_name字段仅在if sendEmailvalue="Yes"时才会被验证。
不知道怎么做,有人可以帮我这个吗? 感谢

2 个答案:

答案 0 :(得分:5)

在你的控制器中执行这样的条件:

if ($this->input->post('sendEmail') == 'Yes'){

  $this->form_validation->set_rules('email', 'Email', 'required');
  ... [etc]
}

答案 1 :(得分:1)

验证仅在您调用$this->form_validation->run()时运行,因此请在此之前编写if语句。像这样:

if ($this->input->post("sendEmail") == 'Yes') {
    $this->form_validation->set_rules($config);
    if ($this->form_validation->run() == FALSE)
    {
        // failed validated
    }
    else
    {
        // passed validation
    }
} else {
    // never attempted validation
}