2011-03-07 45 views
3

我在将一段表单验证代码转换为CI 2.0时出现了一些问题。我试图验证一组复选框,但由于某种原因验证未能运行回调或不验证。CodeIgniter 2.0 - 验证阵列

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

编辑:

这里是它失败我一个更好的解释。比方说,我有以下字段:

<input type="checkbox" value="1" name="purpose[]" /> 
<input type="checkbox" value="2" name="purpose[]" /> 

我给自己定的目的[]两个规则 - 一个是需要规则的,另一种是定制的回调,检查该值是否存在可能的值的数组中。

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

<input type="checkbox" value="1" name="purpose[abc]" /> 

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

有人有关于如何处理这个问题的想法?

回答

10

数组必须传递给你的set_rules调用后缀打开/关闭方括号,就像这样:

$this->form_validation->set_rules('checkboxes[]', 'My Checkboxes', 'required'); 

还有的CI用户指南中更多的细节 - http://ellislab.com/codeigniter/user_guide/libraries/form_validation.html#arraysasfields

为了应对检查对于您的复选框值为多个值之一,您需要创建自定义回调函数 - http://ellislab.com/codeigniter/user_guide/libraries/form_validation.html#callbacks

+0

感谢您的回复。在弄乱了一下后,我发现我的问题好一点。你能否在我原来的问题中检查编辑?再次感谢。 – RS7 2011-03-08 14:58:28

+0

独特的验证是不是,如果你知道我该怎么做,请帮助。谢谢。 – 2014-08-25 09:46:38