Thinkphp5验证类使用


tp3.2的验证只能在model中使用,Tp5中的验证器类可以在控制器中进行实例化操作,便于开发,提升model的复用性

具体操作如下


                  $adata['name'] = input('office_name');
           $adata['mobile'] = input('mobile');
           $adata['pwd'] = input('pwd');
           $adata['insert_time'] = time();
           $adata['id'] = input('id');
//            规则验证
           $rule = [
               ['name','chs','名称只能是汉字或字母'],
               ['mobile',['regex'=>'^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$'],'手机号不正确'],
               ['pwd','alphaNum','密码只能是数字和字母的组合'],
           ];
           $validate = new Validate($rule);
           $result   = $validate->check($adata);
           if(!$result){
              $this->error($validate->getError());die;
           }

并且官网上提供了验证规则和提示信息分开配置的例子,便于维护

$rule = [
   'name'  => 'require|max:25',
   'age'   => 'number|between:1,120',
   'email' => 'email',
];
$msg = [
   'name.require' => '名称必须',
   'name.max'     => '名称最多不能超过25个字符',
   'age.number'   => '年龄必须是数字',
   'age.between'  => '年龄必须在1~120之间',
   'email'        => '邮箱格式错误',
];
$data = [
   'name'  => 'thinkphp',
   'age'   => 121,
   'email' => 'thinkphp@qq.com',
];
$validate = new Validate($rule,$msg);
$result   = $validate->check($data);
if(!$result){
   echo $validate->getError();
}

这样就可以单独配置提示信息了, 不过我觉得有点啰嗦,不如直接用封装好的rule

tp5封装了助手函数来进行直接实例化

Validate()

请注意:对于一个字段可以设置多个验证规则,使用|分割。 或者采用数组方式定义多个规则(适用于你的验证规则中有|的情况)

如第一种方法中正则使用

博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论