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()
请注意:对于一个字段可以设置多个验证规则,使用|分割。 或者采用数组方式定义多个规则(适用于你的验证规则中有|的情况)
如第一种方法中正则使用