TP5驗證規則使用 TP5驗證規則使用
阿新 • • 發佈:2018-11-12
TP5驗證規則使用
定義驗證器類:
namespace app\index\validate;
use think\Validate; class User extends Validate { protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', ]; protected $message = [ 'name.require' => '使用者名稱必須', 'email' => '郵箱格式錯誤', ]; protected $scene = [ 'add' => ['name','email'], 'edit' => ['email'], ]; }
①靜態呼叫(使用內建的規則驗證單個數據,返回值為布林值)
// 日期格式驗證
Validate::dateFormat('2016-03-09','Y-m-d'); // true // 驗證是否有效的日期 Validate::is('2016-06-03','date'); // true // 驗證是否有效郵箱地址 Validate::is('[email protected]','email'); // true // 驗證是否在某個範圍 Validate::in('a',['a','b','c']); // true // 驗證是否大於某個值 Validate::gt(10,8); // true // 正則驗證 Validate::regex(100,'\d+'); // true
②模型驗證(在模型中的驗證方式)
$User = new User;
$result = $User->validate(
[
'name' => 'require|max:25', 'email' => 'email', ], [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過25個字元', 'email' => '郵箱格式錯誤', ] )->save($data); if(false === $result){ // 驗證失敗 輸出錯誤資訊 dump($User->getError()); }
③控制器驗證(控制器中進行驗證)
如果你需要在控制器中進行驗證,並且繼承了\think\Controller
的話,可以呼叫控制器類提供的validate
方法進行驗證,如下:
$result = $this->validate(
[
'name' => 'thinkphp',
'email' => '[email protected]', ], [ 'name' => 'require|max:25', 'email' => 'email', ]); if(true !== $result){ // 驗證失敗 輸出錯誤資訊 dump($result); }
控制器中的驗證程式碼可以簡化為:
$result = $this->validate($data,'User');
if(true !== $result){ // 驗證失敗 輸出錯誤資訊 dump($result); }
如果要使用場景,可以使用:
$result = $this->validate($data,'User.edit');
if(true !== $result){ // 驗證失敗 輸出錯誤資訊 dump($result); }
在validate方法中還支援做一些前置的操作回撥,使用方式如下:
$result = $this->validate($data,'User.edit',[],[$this,'some']); if(true !== $result){ // 驗證失敗 輸出錯誤資訊 dump($result); }
定義驗證器類:
namespace app\index\validate;
use think\Validate; class User extends Validate { protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', ]; protected $message = [ 'name.require' => '使用者名稱必須', 'email' => '郵箱格式錯誤', ]; protected $scene = [ 'add' => ['name','email'], 'edit' => ['email'], ]; }
①靜態呼叫(使用內建的規則驗證單個數據,返回值為布林值)
// 日期格式驗證
Validate::dateFormat('2016-03-09','Y-m-d'); // true // 驗證是否有效的日期 Validate::is('2016-06-03','date'); // true // 驗證是否有效郵箱地址 Validate::is('[email protected]','email'); // true // 驗證是否在某個範圍 Validate::in('a',['a','b','c']); // true // 驗證是否大於某個值 Validate::gt(10,8); // true // 正則驗證 Validate::regex(100,'\d+'); // true
②模型驗證(在模型中的驗證方式)
$User = new User;
$result = $User->validate(
[
'name' => 'require|max:25', 'email' => 'email', ], [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過25個字元', 'email' => '郵箱格式錯誤', ] )->save($data); if(false === $result){ // 驗證失敗 輸出錯誤資訊 dump($User->getError()); }
③控制器驗證(控制器中進行驗證)
如果你需要在控制器中進行驗證,並且繼承了\think\Controller
的話,可以呼叫控制器類提供的validate
方法進行驗證,如下:
$result = $this->validate(
[
'name' => 'thinkphp',
'email' => '[email protected]', ], [ 'name' => 'require|max:25', 'email' => 'email', ]); if(true !== $result){ // 驗證失敗 輸出錯誤資訊 dump($result); }
控制器中的驗證程式碼可以簡化為:
$result = $this->validate($data,'User');
if(true !== $result){ // 驗證失敗 輸出錯誤資訊 dump($result); }
如果要使用場景,可以使用:
$result = $this->validate($data,'User.edit');
if(true !== $result){ // 驗證失敗 輸出錯誤資訊 dump($result); }
在validate方法中還支援做一些前置的操作回撥,使用方式如下:
$result = $this->validate($data,'User.edit',[],[$this,'some']); if(true !== $result){ // 驗證失敗 輸出錯誤資訊 dump($result); }