?’require|max:25’,???? ????’ag">
可以在定義驗(yàn)證規(guī)則的時(shí)候定義場(chǎng)景,并且驗(yàn)證不同場(chǎng)景的數(shù)據(jù),例如:
$rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; $msg = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過(guò)25個(gè)字符', 'age.number' => '年齡必須是數(shù)字', 'age.between' => '年齡只能在1-120之間', 'email' => '郵箱格式錯(cuò)誤', ]; $data = [ 'name' => 'thinkphp', 'age' => 10, 'email' => 'thinkphp@qq.com', ]; $validate = new Validate($rule); $validate->scene('edit', ['name', 'age']); $result = $validate->scene('edit')->check($data);
表示驗(yàn)證edit場(chǎng)景(該場(chǎng)景定義只需要驗(yàn)證name和age字段)。
如果使用了驗(yàn)證器,可以直接在類里面定義場(chǎng)景,例如:
namespace appindexvalidate;use thinkValidate;class User extends Validate{ protected $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; protected $message = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過(guò)25個(gè)字符', 'age.number' => '年齡必須是數(shù)字', 'age.between' => '年齡只能在1-120之間', 'email' => '郵箱格式錯(cuò)誤', ]; protected $scene = [ 'edit' => ['name','age'], ]; }
然后再需要驗(yàn)證的地方直接使用 scene 方法驗(yàn)證
$data = [ 'name' => 'thinkphp', 'age' => 10, 'email' => 'thinkphp@qq.com', ]; $validate = new appindexvalidateUser($rule); $result = $validate->scene('edit')->check($data);
可以在定義場(chǎng)景的時(shí)候?qū)δ承┳侄蔚囊?guī)則重新設(shè)置,例如:
namespace appindexvalidate;use thinkValidate;class User extends Validate{ protected $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; protected $message = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過(guò)25個(gè)字符', 'age.number' => '年齡必須是數(shù)字', 'age.between' => '年齡只能在1-120之間', 'email' => '郵箱格式錯(cuò)誤', ]; protected $scene = [ 'edit' => [ 'name','age'=>'require|number|between:1,120'], ]; }
可以對(duì)場(chǎng)景設(shè)置一個(gè)回調(diào)方法,用于動(dòng)態(tài)設(shè)置要驗(yàn)證的字段,例如:
$rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; $msg = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過(guò)25個(gè)字符', 'age.number' => '年齡必須是數(shù)字', 'age.between' => '年齡只能在1-120之間', 'email' => '郵箱格式錯(cuò)誤', ]; $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);