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 表单验证和数组作为字段名称的主要内容,如果未能解决你的问题,请参考以下文章

将所有字段发布为数组的 Codeigniter 表单验证

如何使用 JQuery 将 HTML 表单字段作为数组直接传递到 CodeIgniter 中的数据库

codeigniter 表单验证规则 url

如何在codeigniter中验证数组值

CodeIgniter 2.0 - 验证数组

Codeigniter 在表单中验证数组