|
本帖最后由 Martix 于 2017-4-17 14:04 编辑
这是我写的第一个表单验证方法: 查看
需求:因为自己所有的验证写在了 config/form_validation.php 配置文件中,所以在进行表单过滤的时候,关联 数据库的字段不能写在配置文件里,
虽然有个 is_unique 方法,但是只能是单个字段,不能实现关联字段的验证, in_list 在表单验证中又不能动态传值.这就很尴尬了.
PHP复制代码
$this->load->library('form_validation');
if ($this->form_validation->run('admin/login') == FALSE)
{
$info['error'] = validation_one_errors ();
}
//下面的代码要进行数据库验证,
//例:判断是不是数据库中某个类型下的数据
$type = $_POST['type'];
$this->load->model(array(type_model '));
$info = $this->type_model->get_one($type);
if(!$info){
//..........
}
复制代码
这样每次用到这样的验证,就要自己写一下.(我是这样做的,有好的方法.留言交流),现在觉得有点麻烦,自己扩展一下.
在 system\libraries\Form_validation.php 表单自定义方法:
PHP复制代码
/*
* 加一个跳到 模型(M) 的方法
*/
public function model_validate ($str,$config){
$array = explode(',',$config);
$model = $array[0];
$method = $array[1];
$this->CI->load->model($model);
return $this->CI->$model->$method($str);
}
复制代码
这样就能跳到自己的模型验证了.这里之所以写在核心代码库中,是因为这个类文件已经引入了超全局变量($this->CI),也可以自己写一个类文件,然后自动加载进去.
随后就是在 config/form_validation.php 中其中一个字段这样写: 'rules' => 'model_validate[User_login_model,test]' 验证就会进入 User_login_model/test 方法中.
当然返回错误信息也要配置下.这样就能自定义关联数据库的字段了,不再是单一的字段验证.model_validate[] 传入的参数,可以自己设置.按需求改动.
|
|