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

[版本 3.x] 表单验证规则,一旦触发过一次,后面再调用别的规则不...

[复制链接]
发表于 2017-11-10 22:06:01 | 显示全部楼层 |阅读模式
本帖最后由 dlei 于 2017-11-10 23:11 编辑

做表单编辑,判断用户名如果已经更改了,走规则,判断数据库是否唯一,判断之后,下面当用户原来的邮箱已经更改的话,再走判断邮箱的规则,就会不起作用,返回的判断值一直都是true。如果用户名不变,还是原来的用户名,不触发第一个规则验证,第二个邮箱改变,触发邮箱规则依然起作用,那是不是说CI的同一个表单的验证规则只能写一个,也就是触发一次,再次触发就不起作用了呢?
规则:
       'ad_name'=>array(
            array(
                'field' => 'username',
                'label' => '登录名',
                'rules' => 'required|min_length[6]|is_unique[admin.username]'
            )
        ),
        'ad_email'=>array(
            array(
                'field' => 'email',
                'label' => '邮箱',
                'rules' => 'required|valid_email|is_unique[admin.email]'
            )
        )
调用规则:
//载入验证类
                        $this->load->helper('form');
                        $this->load->library('form_validation');
                      if($username!=$old_name){
                                //执行验证(返回布尔值)
                                $rel=$this->form_validation->run('ad_name');
                                //返回字符串类型-所有的错误信息
                                $info=$this->form_validation->error_string();
                                if(!$rel){
                                        如果不符合规则,做出提示
                                }
                            符合规则,则继续往下走验证邮箱
                        }
                        if($email!=$old_email){
                                //执行验证(返回布尔值)
                                $rel=$this->form_validation->run('ad_email');
                                //返回字符串类型-所有的错误信息
                                $info=$this->form_validation->error_string();
                                if(!$rel){
                                        如果不符合规则,做出提示
                                }
                           符合规则继续执行后面的语句
                        }

本版积分规则