CodeIgniter 2.0 - 验证数组

RS7*_*RS7 3 php arrays validation codeigniter

我在将一段表单验证代码转换为CI 2.0时遇到了一些问题.我正在尝试验证一系列复选框,但由于某些原因,验证无法运行回调或无法验证.

如何验证一系列复选框,以便至少检查一个复选框,并且值必须是选项之一(选项数组的键)?

编辑:

这是一个更好的解释,它失败了我的位置.让我们说我有这些领域:

<input type="checkbox" value="1" name="purpose[]" />
<input type="checkbox" value="2" name="purpose[]" />
Run Code Online (Sandbox Code Playgroud)

我为目的[]设置了两个规则 - 一个是必需的规则,另一个是自定义回调,它检查值是否存在于可能值的数组中.

如果我将字段的名称编辑为:

<input type="checkbox" value="1" name="purpose[abc]" />
Run Code Online (Sandbox Code Playgroud)

甚至将值更改为"",验证通过.它忽略了所需的规则和我的自定义回调.

有人知道如何处理这个问题吗?

Bry*_*ynJ 10

必须将数组传递给set_rules调用后缀为开/关方括号,如下所示:

$this->form_validation->set_rules('checkboxes[]', 'My Checkboxes', 'required');
Run Code Online (Sandbox Code Playgroud)

CI用户指南中有更多详细信息 - https://www.codeigniter.com/user_guide/libraries/form_validation.html#using-arrays-as-field-names

要将复选框值检查作为多个值之一,您需要创建自定义回调函数 - https://www.codeigniter.com/user_guide/libraries/form_validation.html#callbacks-your-own-validation -方法