我正在设置一个带有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
}
答案 0 :(得分:6)
if($this->input->post('checkbox_name')){
// add more validation rules here
}
答案 1 :(得分:6)
它看起来像这样(例如使用地址):
$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.
}