我正在使用codeigniter并尝试使用自定义回调检查功能验证我的表单。但它确实让我感到困惑,因为验证总是返回FALSE。
这是form_input:
echo form_input(array(
'id' => 'aff_hos_0',
'name' => 'aff_hos[]',
'value' => '',
'class' => 'form-control auto_form',
'placeholder' => 'Masukkan Nama Rumah Sakit',
'style' => 'width:100%'));
以下是表格的数据POST:
Array
(
[0] => RS Pantai Indah Kapuk, Cengkareng, Jakarta, Jakarta
[1] => RS Siloam Kebonn Jeruk, Kb. Jeruk, Jakarta, Jakarta
)
这是我设置form_validation:
$this->form_validation->set_rules('aff_hos[]', 'Afiliasi Rumah Sakit ', 'callback_check_chosen_filled[Afiliasi Rumah Sakit]');
这是callback_check函数,我试图通过此回调实现的是检查输入数组( aff_hos [] )是否为空白:
function check_chosen_filled($post_array, $field) {
if (!isset($post_array) || (!is_array($post_array) && !count($post_array) > 0)) {
$this->form_validation->set_message('check_chosen_filled', $field . ' wajib diisi'.print_r($post_array));
return FALSE;
} else {
foreach ($post_array as $row):
if (strlen($row) == 0) {
$this->form_validation->set_message('check_chosen_filled', $field . ' wajib diisi');
return FALSE;
}
endforeach;
}
return TRUE;
}
答案 0 :(得分:0)
问题是你在回调中将第一个参数作为数组。实际上,它不是数组。 CI验证库迭代每个数组值以调用自定义回调。这就是为什么你的代码应该是这样的。
function check_chosen_filled($value, $field) {
if (empty($value)) {
// set validation error msg
return FALSE;
}
return TRUE;
}
希望它对你有用。