验证器类
<?php
namespace app\validate;
use think\Validate;
/**
* 验证器类
* 自定义的验证器类需要继承Validate
* 主要就是给rule[]初始化验证规则
* 在控制器中实例化调用check()传入数据即可验证
* 也可以静态代理实现
*/
class UserValidate extends Validate
{
//验证规则 'name|名字'可加入别名
protected $rule = [
'name|名字'=>[
'require',
'max'=>'20',
'min'=>'2'
],
//属性可以重复写使得看上去整齐
'email|邮箱'=>[
'require' => 'require',
'email' => 'email'
],
'password|密码' =>[
'require' => 'require',
'min' => '3',
'max' => '12',
'alphaNum' => 'alphaNum'
],
];
}
控制器
<?php
namespace app\index\controller;
use app\validate\UserValidate;
use app\facade\User;
use think\Controller;
use think\Facade\Validate;
class Index extends Controller
{
/**
* 验证器
* 使用validate类的rule属性
* 数据一般通过依赖注入传入对象给验证器
*/
public function vali()
{
//数据
$da = [
'name'=>'孙尚香',
'email'=>'139@qq.com',
'password'=>'123qwe'
];
//创建对象方式
// $vde = new UserValidate();
// if (!$vde->check($da)) {
// return $vde->getError();
// }
// return '验证通过';
//静态代理方式
// if (!User::check($da)) {
// return User::getError();
// }
// return '验证通过';
//调用控制器中的validate方法进行验证
//规则
$rule = [
'name|名字'=>[
'require',
'max'=>'20',
'min'=>'2'
],
//可以重复写使得看上去整齐
'email|邮箱'=>[
'require' => 'require',
'email' => 'email'
],
'password|密码' =>[
'require' => 'require',
'min' =>'3',
'max' =>'12',
'alphaNum'
],
];
}
/**
* 独立验证器
* 不依赖与验证器类
*/
function va() {
//验证规则
$rule = [
'name|名字'=>[
'require',
'max'=>'20',
'min'=>'2'
],
//可以重复写使得看上去整齐
'email|邮箱'=>[
'require' => 'require',
'email' => 'email'
],
'password|密码' =>[
'require' => 'require',
'min' =>'3',
'max' =>'12',
'alphaNum'
],
];
//通过rule()给rule[]初始化
Validate::rule($rule);
//验证数据
$da = [
'name'=>'孙尚香',
'email'=>'139@qq.com',
'password'=>'123qwe'
];
//验证
if (!Validate::check($da)) {
return Validate::getError();
}
return '验证通过';
}
}