### 使用think\Validate中的$rule属性
首先在application下建立validate目录,同时创建User.php类文件
```
namespace app\\validate;
use think\\Validate;
class User extends Validate
{
protected $rule = \[
'name|姓名' => ['require','min' => 5, 'max' => 20\],
'email' =>['require', 'email' => 'email'],
'password' =>['require', 'min' => 3, 'max' => 12,'alphaNum'],
'mobile|电话' => ['require', 'mobile'],
];
}
```
在index控制器中的index方法中进行验证
use app\validate\User;
需要验证的数据(这里模拟,一般是用户提交过来的数据)
```
$data = [
'name' => 'jeevin',
'email' => 'jeevin@126.com',
'password' => '123abc',
];
$validate = new User();
if(!$validate->check($data)) {
return $validate->getError();
}else {
return '验证通过';
}
```
### 使用静态代理
在application下面建立一个facade目录,然后再建立一个User.php类文件,用来静态代理validate\\User
```
namespace app\\facade;
class User extends \\think\\Facade
{
protected static function getFacadeClass()
{
return '\\app\\validate\\User';
}
}
```
然后再use app\\facade\\User;就直接调用User::check($data);
如果不用上面的getFacadeClass方法,还可以用bind方法:\\think\\Facade::bind('app\\facade\\User','app\\validate\\User');
*****
### 控制器验证
通过Controller这个类中的validate($data,$validate)方法进行验证
还是要自己创建一个验证类app\\validate\\User
```
$data = [
'name' => 'jeevin',
'email' => 'jeevin@126.com',
'password' => '123abc',
'mobile' => '130000000'
];
```
调用控制器自带的validate方法来验证
```
$validate = 'app\\validate\\User';
$res = $this->validate($data, $validate);
if(true !== $res) {
return $res;
}
return '验证通过';
```
### 独立验证
独立验证是不依赖于用户自定义规则类
使用的是验证器类think\\Validate.php中的rule()方法
rule()方法实际上是完成给定当前类的protected $rule = \[\]属性的初始化
首先引入Validate类,这里引入静态代表类
```
use think\\facade\\Validate;
public function test3()
{
//创建验证规则
$rule =[
'name|姓名' => ['require','min' => 5, 'max' => 20],
'email' => ['require', 'email' => 'email'],
'password|密码' =>['require', 'min' => 3, 'max' => 12,'alphaNum'],
'mobile|电话' => ['require', 'mobile'],
];
Validate::rule($rule);
$data = [
'name' => 'jeevin',
'email' => 'jeevin@126.com',
'password' => '123abc',
'mobile' => '18628969869'
];
if(!Validate::check($data)){
return Validate::getError();
}
return '验证通过';
}
```
验证器是一个自定义的类,必须继承框架下的验证类think\\Validate.php;
验证器可以创建在application目录下的任何一个可以访问的目录下面;
验证器其实就完成框架think\\Validate.php中的属性protected $rule = \[\]的初始化;
在控制器中直接实例化调用check()进行验证;
还可以创建一个自定义的静态代理,来统一验证方法的调用方式。