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