模型驗(yàn)證

在模型中的驗(yàn)證方式如下:

$User = new User;
$result = $User->validate(
    [
        'name'  => 'require|max:25',
        'email'   => 'email',
    ],
    [
        'name.require' => '名稱(chēng)必須',
        'name.max'     => '名稱(chēng)最多不能超過(guò)25個(gè)字符',
        'email'        => '郵箱格式錯(cuò)誤',
    ]
)->save($data);
if(false === $result){
    // 驗(yàn)證失敗 輸出錯(cuò)誤信息
    dump($User->getError());
}

第二個(gè)參數(shù)如果不傳的話,則采用默認(rèn)的錯(cuò)誤提示信息。

如果使用下面的驗(yàn)證器類(lèi)的話:

namespace app\index\validate;
use think\Validate;
class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];
    
    protected $message = [
        'name.require'  =>  '用戶名必須',
        'email' =>  '郵箱格式錯(cuò)誤',
    ];
    
    protected $scene = [
        'add'   =>  ['name','email'],
        'edit'  =>  ['email'],
    ];    
}

模型驗(yàn)證代碼可以簡(jiǎn)化為:

$User = new User;
// 調(diào)用當(dāng)前模型對(duì)應(yīng)的User驗(yàn)證器類(lèi)進(jìn)行數(shù)據(jù)驗(yàn)證
$result = $User->validate(true)->save($data);
if(false === $result){
    // 驗(yàn)證失敗 輸出錯(cuò)誤信息
    dump($User->getError());
}

如果需要調(diào)用的驗(yàn)證器類(lèi)和當(dāng)前的模型名稱(chēng)不一致,則可以使用:

$User = new User;
// 調(diào)用Member驗(yàn)證器類(lèi)進(jìn)行數(shù)據(jù)驗(yàn)證
$result = $User->validate('Member')->save($data);
if(false === $result){
    // 驗(yàn)證失敗 輸出錯(cuò)誤信息
    dump($User->getError());
}

同樣也可以支持場(chǎng)景驗(yàn)證:

$User = new User;
// 調(diào)用Member驗(yàn)證器類(lèi)進(jìn)行數(shù)據(jù)驗(yàn)證
$result = $User->validate('User.edit')->save($data);
if(false === $result){
    // 驗(yàn)證失敗 輸出錯(cuò)誤信息
    dump($User->getError());
}
文檔最后更新時(shí)間:2018-04-26 10:47:18

文檔
目錄

深色
模式

切換
寬度