codeigniter - 避免对 CodeIgniter 中的非必填字段进行表单验证强制检查

标签 codeigniter validation

我有一个电子邮件字段,在我的表单验证中不是必需的。它应该可以留空。但是,当我使用表单验证的 set_rules 的“valid_email”参数时,它仍然会给出一个错误消息,即如果该字段未填写,则不应检查该电子邮件是无效的。

最佳答案

规则引用

查看reference关于这件事告诉我们以下关于 valid email 规则:

Returns FALSE if the form element does not contain a valid email address.

对于空字段以及具有错误值的字段都是如此。

修剪

我注意到在 CodeIgniter 提供的示例中,电子邮件通常不仅是必需的,而且必须是有效的电子邮件,而且还会被修剪。这可能会导致不同的结果。

$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

在验证过程中,考虑以下几点:

// If the field is blank, but NOT required, no further tests are necessary
if ( ! in_array('required', $rules) AND is_null($postdata))

您的电子邮件字段的内容可能不完全是 null,因此会引发 valid_email 要求的标记。

可能的相关错误

在此答案日期之前三个月,有关此主题的 bitbucket 进行了讨论。讨论可以在 https://bitbucket.org/ellislab/codeigniter-reactor/issue/117/input-fields-are-automatically-required 查看.

据说在标记中使用数组语法(见下文)会导致类似的错误,即使未设置 required 规则:

<input name="user[email]" />

更多讨论和补丁,请点击此处,http://codeigniter.com/forums/viewthread/159243 .一个似乎可以解决问题的建议补丁是在上述代码中用 empty() 替换 is_null() 调用:

所以如下:

if ( ! in_array('required', $rules) AND is_null($postdata))

变成:

if ( ! in_array('required', $rules) AND empty($postdata))

关于codeigniter - 避免对 CodeIgniter 中的非必填字段进行表单验证强制检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480719/

相关文章:

scala - 方法抛出异常而不是返回 Try 以进行理解

javascript - 为什么我无法使用 Jquery 插件中的 FormData 从 tinymce 编辑器获取 textarea 的值?

javascript - 在格式化数字输入时验证数字输入

ios - iOS:一个文本字段中的电子邮件ID和电话号码评估

php - 显示 jquery 验证错误消息,但正在提交表单

javascript - 在 html 表单中进行年龄验证时遇到问题

php - CodeIgniter Active Record 一次删除多条记录

php - 如何在数据库中为用户设置 token ,即使在浏览器关闭后也永不过期?

jquery - .show() 和 .hide() 命令无法正常工作

php - 将数据库中的数据显示到下拉菜单 CodeIgniter