Laravel 验证器
基本验证规则
accepted: 验证‘yes’,‘on’,‘true',’1‘
active_url:验证是否是一个有效的路径
after:date:验证是否在一个日期以后
after_or_equal:date:验证是否在一个日期或以后
alpha:验证是否全是英文字母
alpha_dash:验证是否全是英文字母,-,_
alpha_num:验证是否全是英文字母或数字
array:key1,key2:验证是否是数组,且包含key
bail:验证不通过则停止验证
before:date:验证是否在日期之前
before:date:验证是否在日期或之前
between:min,max:验证大小是否在区间,文字列长,数值大小,数组长度,文件大小
boolean:验证是否是伦理值(0,1,’0‘,’1‘,true,false)
confirmed:验证是否和字段{field}_confirmation值一样
current_password:api:验证密码是否和被认证的用户密码一致
date:验证是否是有效日期(strtotime())
data_equals:date:验证是否指定日期
date_format:format:验证日期格式
different:field:验证是否和指定值不同
digits:length:验证数值的位数是否为length
digits_between:min,max:验证该整数位数区间,不能为小数
dimensions:验证图片尺寸
min_width:最小宽度
max_width:最大宽度
min_height:最小高度
max_height:最大高度
width:宽度
height:高度
radio:宽高比
distinct:验证数组中没有重复的值
strict:严格验证没有重复值(不理解)
ignore_case:不区分大小写
email:验证邮件格式
rfc:验证邮箱地址是否违反RFC
strict:严格验证邮箱名是否违反RFC(不含警告)
dns:验证邮箱域是否有效
spoof:验证是否是通过其他语言字母伪装成的有效邮箱域(西里尔字母)
filter:验证时过滤指定目标(php函数filter_var())
ends_with:foo,bar,...:验证是否已指定值结束
exclude_if:filed,val:如果指定filed的值为val,忽视之后的验证规则直接通过
exclude_unless:filed,val:如果指定filed的值不为val,忽视之后的验证规则直接通过
exists:table/model/database.table,column:验证指定的数据表字段中存在该值,不指定列名时使用filed名
file:验证文件是否上传成功
filled:验证字段存在时不为空
gt:field:验证该filed值是否大于指定filed值,同规则size,两值类型必须相同
gte:field:验证该filed值是否大于等于指定filed值,同规则size,两值类型必须相同
image:验证是否为图像(jpg、jpeg、png、bmp、gif、svg、webp)
in:foo,bar...:验证该filed值是否在指定值中
in_array:filed.*:验证该filed值在指定的filed值中
integer:验证是否为整数
ip:验证是否为IP地址形式
ipv4:验证是否为IPv4地址形式
ipv6:验证是否为IPv6地址形式
json:验证是否为有效的json文字列
lt:field:验证该filed值是否小于指定filed值,同规则size,两值类型必须相同
lte:field:验证该filed值是否小于等于指定filed值,同规则size,两值类型必须相同
max:验证不超过最大值,同规则size
mimetypes:text/plain,...:读取文件内容验证文件mime类型,可能存在误差
mimes:foo,bar,...:验证文件扩张子类型
min:验证超过最小值,同规则size
multiple_of:val:验证数值是否为val的倍数关系,小数精度16位以内
not_in:foo,bar,...:验证不在指定值群中
not_regex:验证不满足正则表达式
nullable:验证filed值为null
numeric:验证filed值为数值
present:验证filed是否存在,可以为空
prohibited:验证filed为空或者不存在
prohibited_if:field,val,...:如果指定field值为val等,验证该filed为空或者不存在
prohibited_unless:anotherfield,value,...:如果指定field值不为val等,验证该filed为空或者不存在
regex:验证满足正则表达式
required:验证存在且不为空,null,空数组,空对象,没有路径的文件
required_if:field,val,...:指定field为指定值时验证required,val为空时指代不存在或为空
required_unless:field,val,...:指定field不为指定值时验证required,val为null时指代不存在或为空
required_with:foo,bar,...:指定的field任意一个存在时验证required
required_with_all:foo,bar,...:指定的field全部存在时验证required
required_without:foo,bar,...:指定的field任意一个不存在时验证required
required_with_all:foo,bar,...:指定的field全部不存在时验证required
same:field:验证和指定field值相同
size:val:判断该field值与val的size是否相同,字符串(长度)。数值相等。数组(长度)。文件(大小kb)
size:5
integer|size:5
numeric|size:5
array|size:5
file|size:512
starts_with:foo,bar,...:验证以指定值开头
string:验证是否是字符串,不包含null
timezone:验证是否是时区,基于timezone_identifiers_list
unique:table/model/database.table,column,extraID,IDcolumn:验证除去指定ID外指定表格的ID列中是否唯一,ID列不指定时默认该field名
url:验证是否有效的url
uuid:基于RFC 4122验证是否是有效的通用唯一识别码
sometimes|rule1|rule2:满足rule1才验证rule2
array.key=>rules:验证array[key]
array.*.key=>rules:验证array所有项的[key]
sometimes(fields,rules1,rules2):指定的fields满足rules1才执行rules2
使用函数定义规则
形如Rule::unique('user,'id')->ignore($id);
利用Rule类提供的函数构建规则,可以追加where文。
定义规则类
执行php artisan make:rule Temp 生成继承了Rule的Temp类
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class Temp implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
//通过条件
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
//返回错误信息
//trans('key')获取翻译文件的错误信息
//return 'The :attribute must be uppercase.';获取验证器指定信息
}
}
用法:Validator::make($request->all(),['email.test' => new Temp]);
闭包函数定义规则
$validator = Validator::make($request->all(), [
'title' => [
'required',
'max:255',
function ($attribute, $value, $fail) {
if ($value === 'foo') {
$fail('The '.$attribute.' is invalid.');
}
},
],
]);
写了大半天,终于完结了。网上类似的介绍很多,这样整理一番,加深了不少理解。来日方长,加油。
|