用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3002|回复: 0
收起左侧

[库 Library] 自定义Codeginter表单验证类Form_validation

[复制链接]
发表于 2012-10-18 17:41:33 | 显示全部楼层 |阅读模式
本帖最后由 longjianghu 于 2012-10-18 17:43 编辑

最近在开发项目的时候发现CI表单验证类(Form_validation.php)在验证数组的时候存在BUG。所以在此写下此做为记录。

html示例代码需要验证以下表单项(只是示例实际项目中并非如此):


HTML复制代码
 
<ul>
<li><label for="nickname">昵称</label><input type="text" name="nickname" id="nickname" value="" /></li>
<li>
<label for="">喜欢的运动:</label>
<input type="text" name="sports[]" value="" />
<input type="text" name="sports[]" value="" />
</li>
<li><label for="">Email:</label><input type="text" name="user[email]" value="" /></li>
</ul>
 
复制代码


PHP验证规则如下(昵称必须填写,喜欢的运动和电子邮箱可以选填):

PHP复制代码
 
$this->form_validation->set_rules('nickname', 'Nickname', 'required');
$this->form_validation->set_rules('sports[]', 'Sports', 'min_length[2]');
$this->form_validation->set_rules('user[email]', 'Email', 'valid_email');
 
复制代码


当我们运行程序的时候发现运动和电子邮箱成了必选项,这并不是我想要的效果。


The Nickname field is required.

The Sports field must be at least 2 characters in length.

The Email field must contain a valid email address.


修改之后的效果如下:

The Nickname field is required.

这才是我想要的效果。暂时还没有发现BUG。验证数组目前只支持sports[]或者food[apple]两种方式,多维数组暂未考虑。

使用方法:下载附件把Form_validation.php文件放到你的application/libraries目录下。


Form_validation.rar (6.43 KB, 下载次数: 29)

本版积分规则