我有一个电子邮件字段,在我的表单验证中不是必需的。它应该可以留空。但是,当我使用表单验证的 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/