用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3156|回复: 18
收起左侧

[已解决] form_validation 第四个参数设置自定义错误

[复制链接]
发表于 2016-11-4 20:47:19 | 显示全部楼层 |阅读模式
form_validation 第四个参数设置自定义错误,为什么不能够生效

PHP复制代码
$this->form_validation->set_rules('password', 'Password', 'trim|required'array('required'  => '*必选项') );
复制代码


 楼主| 发表于 2016-11-5 13:34:46 | 显示全部楼层
PHP复制代码
        //validate form input
        $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean' ,
                array('min_length'  => '*5~12个字符',
                        'max_length'  => '*5~12个字符',
                        'required'  => '*必选项',
                )
        );
        $this->form_validation->set_rules('password', 'Password', 'trim|required' ,
                array('required'  => '*必选项',
                )
        );
       
//         $this->form_validation->set_message('required', '*必选项');
//         $this->form_validation->set_message('min_length', '*5~12个字符');
//         $this->form_validation->set_message('max_length', '*5~12个字符');
复制代码
 楼主| 发表于 2016-11-7 15:19:53 | 显示全部楼层
Hex 发表于 2016-11-7 14:51
看了一下,这个类库扩展的太多了,你可以说说你的具体需求,为什么要扩展系统的类库呢? ...
  1. /**
  2.      * Executes the Validation routines
  3.      *
  4.      * Modified to work with HMVC -- Phil Sturgeon
  5.      * Modified to work with callbacks in the calling model -- Jerel Unruh
  6.      *
  7.      * @access    private
  8.      * @param    array
  9.      * @param    array
  10.      * @param    mixed
  11.      * @param    integer
  12.      * @return    mixed
  13.      */
  14.     protected function _execute($row, $rules, $postdata = NULL, $cycles = 0)
复制代码


其他一些函数只是自定义的验证规则和一些系统规则的重写,这个函数的执行造成了set_rules 第四个参数无效,这个函数的覆盖是为了适应HMVC的系统架构和错误输出,以及自定义回调函数的调用路径规则。大概是这样的,可能不准确
 楼主| 发表于 2016-11-7 09:55:35 | 显示全部楼层
Hex 发表于 2016-11-6 23:13
看起来你写的没问题。重新下载一个干净的 CI 试试?

找到原因了 ,
  1. class My_Form_validation extends CI_Form_validation
复制代码

这个是集成CI_Form_validation ,放在libraries/目录下
不过我不明白的是
  1. $this->load->library('form_validation');
复制代码
为什么能够直接引用这个自定义的,而不是系统库
发表于 2016-11-4 22:34:14 | 显示全部楼层
你的代码逗号好像有问题吧。。。。
 楼主| 发表于 2016-11-5 11:16:37 | 显示全部楼层
Hex 发表于 2016-11-4 22:34
你的代码逗号好像有问题吧。。。。

谢谢回复,是我抄的时候逗号抄错了。在程序里调试,没有语法错误的。
我看官方文档也是有这种用法的,就是不能生效。只能set_message 为单个规则设置错误提示信息
发表于 2016-11-6 17:17:00 | 显示全部楼层
你的 CI 版本是什么?
 楼主| 发表于 2016-11-6 20:29:53 | 显示全部楼层
Hex 发表于 2016-11-6 17:17
你的 CI 版本是什么?

3.0+ ,然后我试了一下把内核升级到3.12最新版本,也没有什么用
 楼主| 发表于 2016-11-6 20:51:29 | 显示全部楼层
纳尼啦 发表于 2016-11-5 11:16
谢谢回复,是我抄的时候逗号抄错了。在程序里调试,没有语法错误的。
我看官方文档也是有这种用法的,就 ...
  1. $this->load->library('form_validation');
复制代码

这是我引用的系统库
发表于 2016-11-6 23:13:31 | 显示全部楼层
纳尼啦 发表于 2016-11-6 20:51
这是我引用的系统库


看起来你写的没问题。重新下载一个干净的 CI 试试?
发表于 2016-11-7 13:46:11 | 显示全部楼层
纳尼啦 发表于 2016-11-7 09:55
找到原因了 ,

这个是集成CI_Form_validation ,放在libraries/目录下

对呀,这就是 CI 扩展类库的方式,也就是说你扩展了类库,就没法使用系统原来的类库了,手册里有说明如何使用扩展类库。http://codeigniter.org.cn/user_guide/general/core_classes.html

本版积分规则