CodeIgniter3 form_validation回调函数异常?求排查解决
解决CodeIgniter表单验证回调错误消息不显示问题
这个问题我之前也碰到过,是CodeIgniter表单验证回调里一个容易踩的小坑!
问题根源
你看到的错误提示"Unable to access an error message corresponding to your field name...",本质是CodeIgniter找不到对应验证规则的自定义错误消息。问题出在set_message的第一个参数上:当使用callback_前缀的自定义规则时,规则的全名是callback_pricing_group,而不是回调函数的名字pricing_group。你当前用pricing_group作为参数,系统无法关联到正确的规则,所以返回了默认错误提示。
修复方案
方案1:修正set_message的参数
把回调函数里的错误消息设置代码修改为:
public function pricing_group($pricing_group) { if ($pricing_group > 0) { return true; } else { // 第一个参数改为完整的回调规则名 $this->form_validation->set_message('callback_pricing_group', 'Invalid Price Group Specified.'); return false; } }
方案2:在set_rules中直接指定错误消息
也可以跳过回调里的set_message,直接在设置规则时定义错误消息,写法更清晰:
$this->form_validation->set_rules( 'pricing_group', 'Pricing Group', 'callback_pricing_group', array( 'callback_pricing_group' => 'Invalid Price Group Specified.' ) );
这种情况下回调函数可以简化为:
public function pricing_group($pricing_group) { return $pricing_group > 0; }
额外检查项
- 确保已正确加载表单验证库:
$this->load->library('form_validation'); - 确认表单字段的
name属性严格等于pricing_group,和规则中的第一个参数完全一致 - 回调函数必须是
public访问权限(你当前的代码已经满足)
修改后再测试,当pricing_group的值不大于0时,系统就会返回你自定义的错误消息了。
内容的提问来源于stack exchange,提问作者Eoghan
相关产品推荐
相关产品推荐

