我想在CodeIgniter 3中创建自定义验证规则,但我想验证发布的数组(不是字符串)。在CodeIgniter文档中,我也看到了数组。
HTML:
<select name="bonus[]" class="form-control"> ... </select>
<select name="bonus[]" class="form-control"> ... </select>
<select name="bonus[]" class="form-control"> ... </select>
验证
$this->form_validation->set_rules("bonus[]", "Bonuses", "all_unique");
确认规则all_unique
public function all_unique($array)
{
$this->CI->form_validation->set_message('all_unique', '%s are not unique.');
if(count(array_unique($array))<count($array))
{
// Array has duplicates
return FALSE;
}
else
{
// Array does not have duplicates
return TRUE;
}
}
一般来说,我想检查选定的奖金是否重复。 (选择奖励字段的数量可能会有所不同。)
这个问题是传递给all_unique验证方法的值是作为字符串而不是数组传递的,它是第一个bonus []字段的值。如何验证发送奖金数组[]。
答案 0 :(得分:1)
您需要使用set_message
中的callback
来调用all_unique
函数
$this->form_validation->set_rules("bonus[]", "Bonuses", "callback_all_unique");
要在回调中获取数组字段值,请使用post方法
function all_unique()
{
$array = $this->input->post('bonus');// get bonus value
$this->CI->form_validation->set_message('all_unique', '%s are not unique.');
if(count(array_unique($array))<count($array))
{
// Array has duplicates
return FALSE;
}
else
{
// Array does not have duplicates
return TRUE;
}
}