易優cms驗證場景指南
5.0.4 增加hasScene方法用于檢查是否存在驗證場景
可以在定義驗證規則的時候定義場景,并且驗證不同場景的數據,例如:
$rule = [
‘name’ => ‘require|max:25’,
‘age’ => ‘number|between:1,120′,
’email’ => ’email’,
];
$msg = [
‘name.require’ => ‘名稱必須’,
‘name.max’ => ‘名稱最多不能超過25個字符’,
‘age.number’ => ‘年齡必須是數字’,
‘age.between’ => ‘年齡只能在1-120之間’,
’email’ => ‘郵箱格式錯誤’,
];
$data = [
‘name’ => ‘thinkphp’,
‘age’ => 10,
’email’ => ‘thinkphp@qq.com’,
];
$validate = new Validate($rule);
$validate->scene(‘edit’, [‘name’, ‘age’]);
$result = $validate->scene(‘edit’)->check($data);表示驗證edit場景(該場景定義只需要驗證name和age字段)。
如果使用了驗證器,可以直接在類里面定義場景,例如:
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’ => ‘名稱最多不能超過25個字符’,
‘age.number’ => ‘年齡必須是數字’,
‘age.between’ => ‘年齡只能在1-120之間’,
’email’ => ‘郵箱格式錯誤’,
];protected $scene = [
‘edit’ => [‘name’,’age’],
];}
然后再需要驗證的地方直接使用 scene 方法驗證
$data = [
‘name’ => ‘thinkphp’,
‘age’ => 10,
’email’ => ‘thinkphp@qq.com’,
];$validate = new \app\index\validate\User($rule);
$result = $validate->scene(‘edit’)->check($data);可以在定義場景的時候對某些字段的規則重新設置,例如:
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’ => ‘名稱最多不能超過25個字符’,
‘age.number’ => ‘年齡必須是數字’,
‘age.between’ => ‘年齡只能在1-120之間’,
’email’ => ‘郵箱格式錯誤’,
];protected $scene = [
‘edit’ => [‘name’,’age’=>’require|number|between:1,120′],
];}
可以對場景設置一個回調方法,用于動態設置要驗證的字段,例如:
$rule = [
‘name’ => ‘require|max:25’,
‘age’ => ‘number|between:1,120′,
’email’ => ’email’,
];
$msg = [
‘name.require’ => ‘名稱必須’,
‘name.max’ => ‘名稱最多不能超過25個字符’,
‘age.number’ => ‘年齡必須是數字’,
‘age.between’ => ‘年齡只能在1-120之間’,
’email’ => ‘郵箱格式錯誤’,
];
$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);如果您的問題還未解決可以聯系站長付費協助。

有問題可以加入技術QQ群一起交流學習
本站vip會員 請加入無憂模板網 VIP群(50604020) PS:加入時備注用戶名或昵稱
普通注冊會員或訪客 請加入無憂模板網 技術交流群(50604130)
客服微信號:15898888535
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若內容侵犯了原著者的合法權益,可聯系站長刪除。