Thinkphp5基礎——11 validate驗證
前言
Validate可以對引數進行驗證,方便我們攔截惡意引數。
Validate有兩種主要用法:獨立驗證
、驗證器
。
驗證器
首先,總覽一下使用驗證器的步驟。
步驟:
1)新建一個類,繼承think\Validate。
2)該類有一個固定的protected屬性rule
如果是自定義的規則的話,可以在類裡面使用protected function定義一個函式進行指定。
這個函式的引數按照順序分別是:驗證資料、驗證規則、全部資料(陣列)、欄位名、欄位描述。
3)該類有一個固定的protected屬性message,可以規定返回的錯誤資訊,key是欄位名,值是內容。
4)引入這個類,例項化。
5)使用batch( )處理批量資料校驗。
6)使用check( )方法校驗是否符合規則。
7)使用getError( )方法獲取錯誤資訊。
例項
Count.php(驗證類檔案)
namespace app\api\validate;
class Count
{
// 欄位校驗規則
protected $rule = [
'count' => 'isPostiveInteger|between:1,15',
....
];
// 錯誤提示資訊
protected $message = [
'count' => 'count必須是在1~15之間',
...
];
// 自定義驗證規則
protected function isPostiveInteger($value,$rule='',$data='',$field=''){
if(is_numeric($value) && is_int($value + 0) && ($value + 0) > 0){
return true;
}else{
return false;
}
}
}
Goods.php(呼叫驗證類的檔案)
use app\api\validate\Count;
class Goods
{
$data = [
'count' => '111',
...
];
$validate = new Count();
$validate->batch()->check($data);
if (!$validate) {
dump($validate->getError());
}
}
獨立驗證
獨立驗證和驗證器最大的區別是它的驗證規則、錯誤提示資訊是直接寫在上文的。
$validate = new Validate([
'name' => 'require|max:25',
'email' => 'email'
]);
$data = [
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com'
];
if (!$validate->check($data)) {
dump($validate->getError());
}
構建Validate驗證層
BaseValidate類
1)建立一個BaseValidate類,繼承think\Validate。
2)BaseValidate類有一個goCheck方法,可以呼叫check方法檢測引數是否符合規則。其實就是封裝了一下原來的check方法。
對應的validate類
1)新建對應的validate類,繼承BaseValidate類。
2)該類有一個固定的protected屬性rule。
如果是自定義的規則的話,可以在類裡面使用protected function定義一個函式進行指定。
3)還有一個固定的protected屬性rule,可以指定錯誤資訊。
Model層
例項化對應的validate類,呼叫goCheck()方法校驗。
一起來看看簡單的例子:
BaseValidate類
// 統一驗證()方法
public function goCheck(){
// 1.引數
$params = input('param.');
// 2.校驗引數是否合規
$result = $this->batch()->check($params);
// 3.不符合就丟擲異常
if(!$result){
$e = new ParameterException([
'msg' => $this->error // 來自於validate類
]);
throw $e;
}else{
return true;
}
}
對應的validate類
class AppTokenGet extends BaseValidate
{
// 欄位校驗規則
protected $rule = [
'ac' => 'require|isNotEmpty',
'se' => 'require|isNotEmpty'
];
}
控制器檔案
$validate = new AppTokenGet ();
$validate->goCheck();
相關文章
- Validator | validate 驗證規則
- jQuery Validate checkbox和radio驗證jQuery
- jquery.validate 表單驗證jQuery
- validate表單驗證外掛
- jQuery Validate驗證除錯開關jQuery除錯
- jQuery Validate驗證規則實質jQuery
- jQuery Validate驗證觸發的方式jQuery
- jQuery Validate驗證規則的使用jQuery
- jQuery Validate驗證規則使用演示jQuery
- jQuery Validate忽略指定元素不驗證jQuery
- jQuery Validate非同步ajax方式驗證jQuery非同步
- mongoose使用validate驗證, 獲取自定義驗證資訊Go
- 驗證碼安全基礎
- jQuery Validate驗證上傳檔案大小jQuery
- jQuery Validate新增自定義驗證規則jQuery
- jQuery Validate對select下拉選單驗證jQuery
- 讓你的 validate 支援場景驗證
- Thinkphp5基礎——09 路由PHP路由
- jQuery Validate驗證確認密碼是否相同jQuery密碼
- jQuery Validate表單驗證基本流程介紹jQuery
- jQuery Validate自定義驗證錯誤資訊jQuery
- jQuery Validate獲取驗證錯誤的數目jQuery
- just-validate瀏覽器端驗證框架示例瀏覽器框架
- vue表單驗證你真的會了嗎?元件之表單驗證(form)validateVue元件ORM
- Thinkphp5基礎——08 控制器PHP
- Laravel 解決 validate 驗證 Ajax 表單請求驗證失敗報 422 錯誤Laravel
- Thinkphp5基礎——10 請求引數PHP
- Linux基礎命令---驗證組檔案grpckLinuxRPC
- 驗證碼基礎(小遊戲型別)遊戲型別
- Vue Element校驗validateVue
- Thinkphp5基礎——06 模型(隱藏欄位)PHP模型
- JS 基礎篇(策略模式-表單驗證案例)JS模式
- Laravel, vee-validate, 阿波羅 自定義表單時時驗證Laravel
- Vue表單驗證外掛vee-validate的應用介紹Vue
- jQuery Validate表單驗證(使用者註冊簡單應用)jQuery
- Thinkphp5基礎——07 模型(模型關聯——查詢篇)PHP模型
- 基礎實驗
- jQuery Validate自定義表單元素驗證通過和不通過的樣式jQuery