### 使用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()進行驗證;
還可以創建一個自定義的靜態代理,來統一驗證方法的調用方式。