Codeigniter:Form_validation总是返回FALSE

时间:2015-04-05 14:36:47

标签: php codeigniter

我正在使用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;
}

1 个答案:

答案 0 :(得分:0)

问题是你在回调中将第一个参数作为数组。实际上,它不是数组。 CI验证库迭代每个数组值以调用自定义回调。这就是为什么你的代码应该是这样的。

function check_chosen_filled($value, $field) {
    if (empty($value)) {
        // set validation error msg
        return FALSE;
    }
    return TRUE;
}

希望它对你有用。