当前位置:首页 > CMS教程 > 其它CMS > 列表

laravel 数据验证规则详解

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-16 17:14:51 浏览: 评论:0 

今天小编就为大家分享一篇laravel 数据验证规则详解,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

如下所示:

  1. return [ 
  2.   'accepted' => '必须为yes,on,1,true'
  3.   'active_url' => '是否是一个合法的url,基于PHP的checkdnsrr函数,因此也可以用来验证邮箱地址是否存在'
  4.   'after:date' => '验证字段必须是给定日期后的值,比如required|date|after:tomorrow,通过PHP函数strtotime来验证'
  5.   'after_or_equal:date' => '大于等于'
  6.   'alpha' => '验证字段必须全是字母'
  7.   'alpha_dash' => '验证字段可能具有字母、数字、破折号、下划线'
  8.   'alpha_num' => '验证字段必须全是字母和数字'
  9.   'array' => '数组'
  10.   'before:date' => '小于'
  11.   'before_or_equal:date' => '小于等于'
  12.   'between:min,max' => '给定大小在min,max之间,字符串,数字,数组或者文件大小都用size函数评估'
  13.   'boolean' => '必须为能转化为布尔值的参数,比如:true,false,1,0,"1","0"'
  14.   'confirmed' => '字段必须与foo_confirmation字段值一致,比如,要验证的是password,输入中必须存在匹配的password_confirmation字段'
  15.   'date' => '通过strtotime校验的有效日期'
  16.   'date_equals:date' => '等于'
  17.   'date_format:format' => 'date和date_format不应该同时使用,按指定时间格式传值'
  18.   'different:field' => '验证的字段值必须与字段field的值相同'
  19.   'digits:value' => '必须是数字,并且有确切的值'
  20.   'digits_between:min,max' => '字段长度必须在min,max之间'
  21.   'dimensions' => '验证的文件是图片并且图片比例必须符合规则,比如dimensions:min_width=100,min_height=200,可用 
  22.           的规则有min_width,max_width,min_height,max_height,width,height,ratio', 
  23.   'distinct' => '无重复值'
  24.   'email' => '符合e-mail地址格式'
  25.   'exists:table,column' => '必须存在于指定的数据库表中'
  26.   'file' => '成功上传的文件'
  27.   'filled' => '验证的字段存在时不能为空'
  28.   'image' => '验证的文件必须是图像,jpeg,png,bmp,gif,svg'
  29.   'in:foo,bar,...' => '验证的字段必须包含在给定的值列表中'
  30.   'in_array:anotherfield' => '验证的字段必须存在于另一个字段的值中'
  31.   'integer' => '整数'
  32.   'ip' => 'ip地址'
  33.   'ipv4' => 'ipv4地址'
  34.   'ipv6' => 'ipv6地址'
  35.   'json' => 'json字符串'
  36.   'max:value' => '大于'
  37.   'mimetypes:text/plain,...' => '验证的文件必须与给定的MIME类型匹配'
  38.   'mimes:foo,bar,...' => '验证的文件必须具有列出的其中一个扩展名对应的MIME类型'
  39.   'min:value' => '小于'
  40.   'nullable' => '可为null,可以包含空值的字符串和整数'
  41.   'not_in:foo,bar...' => '不包含'
  42.   'numeric' => '必须为数字'
  43.   'present' => '验证的字段必须存在于输入数据中,但可以为空'
  44.   'regex:pattern' => '验证的字段必须与给定正则表达式匹配'
  45.   'required' => '验证的字段必须存在于输入数据中,但不可以为空'
  46.           //以下情况视为空:1.该值为null,2.空字符串,3.空数组或空的可数对象,4.没有路径的上传文件 
  47.   'required_if:anotherfield,value,...' => '如果指定的anotherfield等于value时,被验证的字段必须存在且不为空'
  48.   'required_unless:anotherfield,value,...' => '如果指定的anotherfield等于value时,被验证的字段不必存在'
  49.   'required_with:foo,bar,...' => '只要指定的其它字段中有任意一个字段存在,被验证的字段就必须存在且不为空'
  50.   'required_with_all:foo,bar,...' => '当指定的其它字段必须全部存在时,被验证的字段才必须存在且不为空'
  51.   'required_without_all:foo,bar,...' => '当指定的其它字段必须全部不存在时,被验证的字段必须存在且不为空'
  52.   'required_without:foo,bar,...' => '当指定的其它字段有一个字段不存在,被验证的字段就必须存在且不为空'
  53.   'same:field' => '给定字段必须与验证字段匹配'
  54.   'size:value' => '验证字段必须具有与给定值匹配的大小,对字符串,value对应字符数;对数字,对应给定的 
  55.           整数值;对数组,对应count值;对文件,是文件大小(kb)', 
  56.   'timezone' => '验证字段是有效的时区标识符,根据PHP函数timezone_identifiers_list判断'
  57.   'unique:table,column,except,idColumn' => '验证字段必须是数据库中唯一的'
  58.   'url' => '有效的url'
  59. ]; 

简单例子

  1. return [ 
  2.   'title.required' => 'A title is required'
  3.   'body.required' => 'A message is required'
  4.   'avatar' => [ 
  5.     'required'
  6.     Rule::dimensions()->maxWidth(500)->maxHeight(250)->ratio(3/2), //限制图片大小和比例 
  7.   ], 
  8.   'foo.*.id' =>'distinct'//不允许重复 
  9.   'state' =>'exists:states'//指定表 
  10.   'state1' => 'exists:states,abbreviation'//指定表和字段 
  11.   'email' => 'exists:connection.staff,email'//指定查询的数据库 
  12.   'email1' => [ 
  13.     'required'
  14.     Rule::exists('staff')->where(function ($query){ 
  15.       $query->where('account_id',1); 
  16.     }), 
  17.   ], 
  18.   'zones' => [ 
  19.     'required'
  20.     Rule::in(['first-zone','second-zone']), 
  21.   ], 
  22.   'video' => 'mimetypes:video/avi,video/mpeg,video/quicktime'
  23.   'photo' => 'mimes:jpeg,bmp,png'//验证文件扩展名,规则上也会验证文件的MIME类型,通过读取文件的内容以猜测它的MIME类型 
  24.   'toppings' => [ 
  25.     'required'
  26.     Rule::notIn(['sprinkles','cherries']), 
  27.   ], 
  28.   //当使用regex时,必须使用数组,而不是|分隔符,特别是正则中有|时 
  29.   'email2' => 'unique:users,email_address'
  30.   'email3' => 'unique:connection.users,email_address'//指定数据库 
  31.   'email4' => Rule::unique('users')->where(function ($query){ 
  32.     $query->where('account_id',1); 
  33.   }), 
  34.   'custom' => [ 
  35.     'person.*.email' => [ 
  36.       'unique' => 'each person must have a unique e-mail address'
  37.     ] 
  38.   ], 
  39. ]; 

特殊例子

  1. //验证时忽视id 
  2. Validator::make($data,[ 
  3.   'email' => [ 
  4.     'required'
  5.     Rule::unique('users')->ignore($user->id,'user_id'), 
  6.   ] 
  7. ]); 
  8.  
  9. //在某些情况下,只有在该字段存在于输入数组中时,才可以对字段执行验证检查 
  10. $v = Validator::make($data,[ 
  11.   'email' => 'sometimes|required|email',//email只有在data数组中时才会被验证 
  12. ]); 
  13.  
  14. $z = Validator::make($data,[ 
  15.   'email' => 'required|email'
  16.   'games' => 'required|numeric'
  17. ]); 
  18. $z->sometimes('reason','required|max:500',function ($input){ 
  19.   return $input->games >= 100; //当值超过100时,reson才必填 
  20. }); 
  21. $z->sometimes(['reson','cost'],'required',function ($input){ 
  22.   return $input->games >= 100; 
  23. }); 
  24. $validator = Validator::make($request->all(),[ 
  25.   'photos.profile' => 'required|image',//验证数组中的某个key的值 
  26. ]); 
  27.  
  28. $validator = Validator::make($request->all(),[ 
  29.   'person.*.email' => 'email|unique:users'
  30.   'person.*.first_name' => 'required_with:person.*.last_name'
  31. ]);//验证指定数组输入字段中的每一个email都是唯一的 
  32.  
  33. $request->validate([ 
  34.   'name' => ['required'new Uppercase()], 
  35. ]); 
  36. $validator = Validator::make($this->request,[ 
  37.   'title' => 'required|unique:posts|max:255'
  38.   'body' => 'required'
  39. ])->validate(); 
  40.  
  41. $validator->after(function ($validator){ 
  42.   if ($this->somethingElseIsInvalid()) { 
  43.     $validator->errors()->add('field''Something is wrong with this field!'); 
  44.   } 
  45. }); 
  46.  
  47. if ($validator->fails()){ 
  48.  
  49.  
  50. $errors = $validator->errors(); 
  51. echo $errors->first('email'); 
  52.  
  53. //以数组形式获取指定字段的所有错误消息 
  54. foreach ($errors->get('email'as $message){ 
  55.  
  56.  
  57. //验证表单的数组字段,获取数组元素的所欲错误消息 
  58. foreach ($errors->get('attachments.*'as $message){ 
  59.  
  60.  
  61. //查看所有字段的错误消息 
  62. foreach ($errors->all() as $message){ 
  63.  
  64.  
  65. // 检测一个字段是否有错误消息 
  66. if ($errors->has('email')){ 
  67.  
  68. }

Tags: laravel数据验证

分享到: