本帖最后由 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)
|