驗證場景
驗證場景
| 版本 | 新增功能 |
|---|---|
| 5.0.4 |
增加hasScene方法用于檢查是否存在驗證場景 |
可(ke)以在定義驗證(zheng)規則的時候定義場景,并且驗證(zheng)不同場景的數據,例如:
$rule = [
'name' => 'require|max:25',
'age' => 'number|between:1,120',
'email' => 'email',
];
$msg = [
'name.require' => '名稱必(bi)須',
'name.max' => '名(ming)稱最多不能超過25個字符',
'age.number' => '年齡必須(xu)是數字',
'age.between' => '年齡只能在(zai)1-120之間',
'email' => '郵(you)箱格式錯誤',
];
$data = [
'name' => 'thinkphp',
'age' => 10,
'email' => 'thinkphp@qq.com',
];
$validate = new Validate($rule);
$validate->scene('edit', ['name', 'age']);
$result = $validate->scene('edit')->check($data);
表示驗(yan)證edit場景(該(gai)場景定義只(zhi)需要(yao)驗(yan)證name和age字段(duan))。
如果使用了(le)驗證(zheng)器,可以直接在類(lei)里面定義場(chang)景,例(li)如:
namespace app\index\validate;
use think\Validate;
class User extends Validate
{
protected $rule = [
'name' => 'require|max:25',
'age' => 'number|between:1,120',
'email' => 'email',
];
protected $message = [
'name.require' => '名稱必須(xu)',
'name.max' => '名稱最多不能超過25個(ge)字符(fu)',
'age.number' => '年齡必須(xu)是數字',
'age.between' => '年齡只能在(zai)1-120之間',
'email' => '郵箱格式錯誤',
];
protected $scene = [
'edit' => ['name','age'],
];
}
然后再需要(yao)驗證的地方直接使用(yong) scene 方法驗證
$data = [
'name' => 'thinkphp',
'age' => 10,
'email' => 'thinkphp@qq.com',
];
$validate = new \app\index\validate\User($rule);
$result = $validate->scene('edit')->check($data);
可(ke)以在(zai)定義場景的(de)時(shi)候(hou)對某些字段(duan)的(de)規則重新設(she)置,例(li)如:
namespace app\index\validate;
use think\Validate;
class User extends Validate
{
protected $rule = [
'name' => 'require|max:25',
'age' => 'number|between:1,120',
'email' => 'email',
];
protected $message = [
'name.require' => '名稱必須',
'name.max' => '名稱(cheng)最多不能(neng)超過25個字(zi)符',
'age.number' => '年齡必(bi)須是數字(zi)',
'age.between' => '年齡(ling)只能在1-120之間(jian)',
'email' => '郵(you)箱格式錯誤',
];
protected $scene = [
'edit' => ['name','age'=>'require|number|between:1,120'],
];
}
可(ke)以(yi)對場景(jing)設(she)置一個回調方(fang)法,用(yong)于動(dong)態設(she)置要驗證(zheng)的字段,例(li)如:
$rule = [
'name' => 'require|max:25',
'age' => 'number|between:1,120',
'email' => 'email',
];
$msg = [
'name.require' => '名稱(cheng)必須',
'name.max' => '名(ming)稱最多不能(neng)超過25個字符',
'age.number' => '年齡(ling)必須是數字',
'age.between' => '年(nian)齡只(zhi)能(neng)在(zai)1-120之間',
'email' => '郵(you)箱格(ge)式錯誤',
];
$data = [
'name' => 'thinkphp',
'age' => 10,
'email' => 'thinkphp@qq.com',
];
$validate = new Validate($rule);
$validate->scene('edit', function($key,$data){
return 'email'==$key && isset($data['id'])? true : false;
});
$result = $validate->scene('edit')->check($data);
文檔最后更新時間:2018-04-26 10:46:44
未解決你的問題?請到「問答社區」反饋你遇到的問題
