codeigniter 表单验证和数组作为字段名称
Posted
技术标签:
【中文标题】codeigniter 表单验证和数组作为字段名称【英文标题】:codeigniter form validation and arrays as field names 【发布时间】:2011-12-05 08:05:53 【问题描述】:我的 html 中有一组复选框,如下所示,
div class="grid_7">
<fieldset class="age shadow_50">
<label class="legend">Age Group</label>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="child" />
<label>Child</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="30's" />
<label>30s</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="60's" />
<label>60's</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="teen" />
<label>Teen</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="40's" />
<label>40's</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="70's" />
<label>70's</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="20's" />
<label>20's</label>
</div>
<div class="formRow checkbox">
<input id="" type="checkbox" name="age[]" value="50's" />
<label>50's</label>
</div>
</fieldset>
</div>
我在我的控制器中设置了一个验证规则(在我看来)确保选中了一个复选框,
$this->form_validation->set_rules('age[]', 'age group', 'required|trim');
但是,在测试这个时,我收到一条名为 age[] 的复选框的错误消息,我只想检查 age[] 是否为空。
我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:你不能像那样测试age[]
,它是一个数组。有几种方法可以做到这一点,但你所做的 required
不是其中之一。
您可以使用 javascript 或通过您自己的自定义 callback function 运行 age[]
值是一种方法。
在 CI 中使用数组的详细信息在这里:https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#arraysasfields
如果你使用 javascript 路由,你可以使用 jQuery 来遍历你的复选框(使用一个类来链接它们)并确保其中 1 个被选中。
【讨论】:
【参考方案2】:老问题,但对于任何努力做到这一点的人,我相信您可以通过在 age
而不是 age[]
上设置规则来做到这一点,即
$this->form_validation->set_rules('age', 'age group', 'fnName');
【讨论】:
以上是关于codeigniter 表单验证和数组作为字段名称的主要内容,如果未能解决你的问题,请参考以下文章