You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter自定义表单验证规则required_fr失效求助

解决CodeIgniter自定义表单验证规则不生效的问题

嘿,我来帮你搞定这个自定义验证规则没触发的问题!从你的描述来看,问题大概率出在自定义规则没有被系统正确识别,下面一步步排查解决:

1. 必须给自定义规则添加验证逻辑实现

CodeIgniter不会自动识别你新增的required_fr规则,你得先告诉系统这个规则要做什么验证。有两种常用方式:

方式一:在控制器里直接定义验证函数

在你的控制器中,添加一个和规则同名的函数:

public function required_fr($str)
{
    // 这里写验证逻辑,比如检查字符串非空(和required类似的逻辑)
    return (!empty(trim($str))) ? TRUE : FALSE;
}

方式二:扩展Form_validation类(更推荐,可复用)

在application/libraries目录下创建MY_Form_validation.php文件,内容如下:

class MY_Form_validation extends CI_Form_validation {
    public function __construct()
    {
        parent::__construct();
    }

    public function required_fr($str)
    {
        // 自定义验证逻辑,比如严格检查非空(可以根据需求调整)
        return (!empty(trim($str))) ? TRUE : FALSE;
    }
}

这样你的required_fr规则就会被系统识别,验证不通过时才会触发对应的Error message 2。

2. 检查语言文件的正确性

  • 确认form_validation_lang.php放在正确的目录:比如application/language/[你的语言目录]/(比如english)
  • 确保语言文件已经被加载,可以在控制器里手动加载:
    $this->load->language('form_validation');
    
  • 检查$lang['required_fr']的拼写完全和规则名一致,没有大小写或字符错误。

3. 确保验证执行所有字段(可选)

默认情况下,CodeIgniter遇到第一个验证错误就会停止后续验证。如果想让所有错误都显示出来,调用run()时传入FALSE:

if ($this->form_validation->run(FALSE) == FALSE) {
    // 验证失败,显示所有错误信息
} else {
    // 验证成功逻辑
}

4. 核对字段名匹配

最后检查表单里的category字段name属性,和你set_rules里的第一个参数完全一致,没有拼写错误——如果字段名不匹配,规则根本不会被触发。

按上面的步骤操作后,你的required_fr规则应该就能正常生效,两项验证不通过时会同时显示对应的错误信息啦!

内容的提问来源于stack exchange,提问作者Walle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:19:12