1. 程式人生 > >TP5驗證規則使用

TP5驗證規則使用

d+ valid require 驗證方式 場景 index edit 返回 als

定義驗證器類:

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);
}

TP5驗證規則使用