控制器驗(yàn)證

如果你需要在控制器中進(jìn)行驗(yàn)證,并且繼承了\think\Controller的話,可以調(diào)用控制器類(lèi)提供的validate方法進(jìn)行驗(yàn)證,如下:

$result = $this->validate(
    [
        'name'  => 'thinkphp',
        'email' => 'thinkphp@qq.com',
    ],
    [
        'name'  => 'require|max:25',
        'email'   => 'email',
    ]);
if(true !== $result){
    // 驗(yàn)證失敗 輸出錯(cuò)誤信息
    dump($result);
}

如果定義了驗(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)化為:

$result = $this->validate($data,'User');
if(true !== $result){
    // 驗(yàn)證失敗 輸出錯(cuò)誤信息
    dump($result);
}

如果要使用場(chǎng)景,可以使用:

$result = $this->validate($data,'User.edit');
if(true !== $result){
    // 驗(yàn)證失敗 輸出錯(cuò)誤信息
    dump($result);
}

在validate方法中還支持做一些前置的操作回調(diào),使用方式如下:

$result = $this->validate($data,'User.edit',[],[$this,'some']);
if(true !== $result){
    // 驗(yàn)證失敗 輸出錯(cuò)誤信息
    dump($result);
}
文檔最后更新時(shí)間:2018-04-26 10:47:01

文檔
目錄

深色
模式

切換
寬度