如何在CodeIgniter 3.1.11中跳过可选字段的表单验证
解决方案
CodeIgniter 3 没有内置 permit_empty 验证规则,也不需要额外配置来实现字段可选,它的表单验证逻辑默认就支持该需求。
场景1:完全不需要校验phone字段
直接删除或注释掉phone字段对应的set_rules代码即可,就像你当前写的那样。CI3的表单验证类只会校验你通过set_rules显式指定了规则的字段,没有设置规则的字段无论是否随表单提交,都不会触发任何验证逻辑。
场景2:用户填写了phone才校验格式,为空则跳过
如果你的需求是手机号填了就要符合格式要求,不填就不校验,那给phone加规则时不要加required参数即可,示例:
$this->form_validation->set_rules('phone', '手机号码', 'trim|min_length[7]|max_length[15]|regex_match[/^[\d\-\+\s\(\)]+$/]');
CI3默认逻辑:如果字段没有配置required规则,且提交的值为空(空字符串、null),会自动跳过该字段的所有后续校验规则,不会返回错误。
异常排查
如果按上述配置后仍提示phone字段相关错误,可排查两个点:
- 项目是否有全局钩子、父控制器逻辑,自动给phone字段加了验证规则
- 表单前端是否给phone输入框加了
required属性,属于前端验证拦截,和后端逻辑无关
内容的提问来源于stack exchange,提问作者Ebenezer Anand Arapally
相关产品推荐
相关产品推荐

