当前位置:  开发笔记 > 编程语言 > 正文

创建自定义codeigniter验证规则

如何解决《创建自定义codeigniter验证规则》经验,为你挑选了2个好方法。



1> Damien Pirsy..:

您可以callback_ 在规则中使用,参见回调.

$this->form_validation->set_rules('email_address', '"Email address"', 'trim|required|valid_email|callback_validate_member');

并在控制器中添加该方法.此方法需要返回TRUE或FALSE

function validate_member($str)
{
   $field_value = $str; //this is redundant, but it's to show you how
   //the content of the fields gets automatically passed to the method

   if($this->members_model->validate_member($field_value))
   {
     return TRUE;
   }
   else
   {
     return FALSE;
   }
}

然后,您需要在验证失败时创建相应的错误

$this->form_validation->set_message('validate_member','Member is not valid!');


可能没有必要,但是前导下划线将阻止通过"/ controller_name/validate_member/blah"访问该方法...并且使用双下划线是完全可以接受的IMO"callback__validate_member";)
用于命名回调函数的双下划线__方案的+1,因为函数变得不可访问并返回404.更多是这样,因为`private`函数不适用于回调.

2> BoCyrill..:

实现这一目标的最佳方法是扩展CodeIgniter的表单验证库.假设我们要创建一个以数据库表access_code_unique字段命名的自定义验证器.access_codeusers

您所要做的就是创建一个MY_Form_validation.phpapplication/libraries目录中命名的类文件.该方法应始终返回TRUEORFALSE

CI =& get_instance();
    }

    public function access_code_unique($access_code, $table_name) {
        $this->CI->form_validation->set_message('access_code_unique', $this->CI->lang->line('access_code_invalid'));

        $where = array (
            'access_code' => $access_code
        );

        $query = $this->CI->db->limit(1)->get_where($table_name, $where);
        return $query->num_rows() === 0;
    }
}

现在,您可以轻松添加新创建的规则

$this->form_validation->set_rules('access_code', $this->lang->line('access_code'), 'trim|xss_clean|access_code_unique[users]'); 

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有