CodeIgniter表单验证可选基于值

时间:2013-01-17 15:28:15

标签: codeigniter validation

我正在设置一个带有CI的表单,我正在使用表单验证来帮助我。

目前我有不同的规则设置,例如

$this->form_validation->set_rules('first_name', 'First Name', 'required|xss_clean');

但是在我的表单中我有一个复选框,启用该复选框将显示选中复选框时所需的一些新输入。 取消选中该复选框时,不需要这些字段。

在CI中执行此操作的最佳方法是什么?

// Set validation rules
$this->form_validation->set_rules('first_name', 'First Name', 'required|xss_clean');
$this->form_validation->set_rules('last_name', 'Last Name', 'required|xss_clean');
// Some more rules here

if($this->form_validation->run() == true) {
    // Form was validated
}

3 个答案:

答案 0 :(得分:6)

if($this->input->post('checkbox_name')){
    // add more validation rules here
}

答案 1 :(得分:6)

几个月前,我面对这样的事情。我刚刚添加了一个简短的if语句。

它看起来像这样(例如使用地址):

$this->form_validation->set_rules('home_address', '"Home Address"', 'required|trim|xss_clean|strip_tags');
$this->form_validation->set_rules('unit', '"Unit"', 'trim|xss_clean|strip_tags');
$this->form_validation->set_rules('city', '"City"', 'required|trim|xss_clean|strip_tags');
$this->form_validation->set_rules('state', '"State"', 'required|trim|xss_clean|strip_tags');
$this->form_validation->set_rules('zip', '"Zip"', 'required|trim|xss_clean|strip_tags');

//checkbox formatted like this in the view: form_checkbox('has_second_address', 'accept'); 
if ($this->input->post('has_second_address') == 'accept')
{
    $this->form_validation->set_rules('street_address_2', '"Street Address 2"', 'required|trim|xss_clean|strip_tags');
    $this->form_validation->set_rules('state_2', '"State 2"', 'required|trim|xss_clean|strip_tags');
    $this->form_validation->set_rules('city_2', '"City 2"', 'required|trim|xss_clean|strip_tags');
    $this->form_validation->set_rules('zip_2', '"Zip 2"', 'required|trim|xss_clean|strip_tags');
}

if($this->form_validation->run() == true) {
    //example
    //will return FALSE if empty
    $street_address_2 = $this->input->post('street_address_2');
    //and so on...
}

我不确定这是否是Codeigniter方式,但上次我检查时找不到“最佳方法”方式。这绝对可以完成工作,它至少可以让你控制用户的$ _POST变量。

无论如何,我希望这有帮助

答案 2 :(得分:0)

您可以使用javascript / jquery将隐藏字段的值设置为true或false,具体取决于是否已选中该复选框。

然后在你的控制器中检查条件

if ($hidden_field) {
   //run more validation.
}