验证场景

验证场景

版本 新增功能
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'
							=>
							'[email protected]', ]; $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'
							=>
							'[email protected]', ];  $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'
							=>
							'[email protected]', ]; $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

文档
目录

深色
模式

切换
宽度