thinkphp的Model模型驗證

thinkphp5的驗證器(validate)和場景驗證在Model中的使用

一、模型中的驗證方式,如下(適用於臨時驗證等情況,不推薦):

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

二、使用驗證器類(推薦):

這是 5.0 推薦的驗證方式,爲具體的驗證場景或者數據表定義好驗證器類,直接調用驗證類的 check 方法即可完成驗證,下面是一個例子:

我們定義一個 \app\index\validate\User 驗證器類用於 User 的驗證。

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'],
    ];    
}

模型驗證代碼

$User = new User;
// 調用當前模型對應的User驗證器類進行數據驗證
$result = $User->validate(true)->save($data);
if(false === $result){
    // 驗證失敗 輸出錯誤信息
    dump($User->getError());
}

//如果需要調用的驗證器類和當前的模型名稱不一致,則可以使用(不推薦):
$result = $User->validate('Member')->save($data);

場景驗證示例

$User = new User;
// 調用User驗證器類下的edit場景進行數據驗證
$result = $User->validate('User.edit')->save($data);
if(false === $result){
    // 驗證失敗 輸出錯誤信息
    dump($User->getError());
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章