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

表单验证,自定义规则问题

[复制链接]
发表于 2014-5-19 16:53:43 | 显示全部楼层 |阅读模式
问题一:自定义规则callback_function 调用失败
     
PHP复制代码
 
     public function index(){
                $this->load->helper(array('form', 'url'));
                $this->load->library('form_validation');
                $this->form_validation->set_rules('username', 'Username', 'callback_username_check');
                if ($this->form_validation->run() == FALSE)
                {
                        $this->load->view('demo_lyl/myform');
                }
                else
                {
                        $this->load->view('demo_lyl/formsuccess');
                }
                       
        }
       
         public function username_check()
         {
         
                  if (1==1)
                  {
                   $this->form_validation->set_message('username_check', 'error');
                   return FALSE;
                  }
                  else
                  {
                   return TRUE;
                  }
           
         }
 
 
   
复制代码


回调函数无效,不会报错,请问是我哪里写错了?

问题二: 在验证规则是能否用 正则表达式
比如this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');  

这里验证username不得小于5大于12   能否直接用正则 /\w[5-12]/   这样处理呢?是不是一定要在回调函数里处理?有单独的规则类似(min_length[]):如preg_match[规则]这样的吗?

欢迎各种赐教啊
 楼主| 发表于 2014-5-20 11:05:10 | 显示全部楼层
第一个问题解决了,是公司的项目把CI重新定义了,继承的是MX_Controller
加一行$this->form_validation->CI =& $this;搞定问题=。=

真郁闷。
然后CI的表单验证类,在控制器里面设置set_rules,就会不在加载config文件下的设置的规则?这样设置了多条公共规则,用的时候突然有一条要加新规则就等全部重写规则?不能只修改这一条,剩下的继承config文件下设置的规则吗?

发表于 2014-5-20 15:36:57 | 显示全部楼层
既然使用CI建议使用CI的规则来书写,否则就没有意义了

本版积分规则