CodeIgniter表单验证可选基于值

wou*_*_be 0 validation codeigniter

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

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

$this->form_validation->set_rules('first_name', 'First Name', 'required|xss_clean');
Run Code Online (Sandbox Code Playgroud)

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

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
}
Run Code Online (Sandbox Code Playgroud)

Mud*_*ark 6

if($this->input->post('checkbox_name')){
    // add more validation rules here
}
Run Code Online (Sandbox Code Playgroud)


env*_*sea 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...
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是Codeigniter方式,但上次我检查时找不到" 最佳方法 "方式.这绝对可以完成工作,并且它至少允许您控制用户$ _POST变量.

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