laravel验证规则


accepted

验证的字段必须为 yeson1、或 true。这在确认服务条款是否同意时相当有用。


active_url

相当于使用了 PHP 函数 dns_get_record,验证的字段必须具有有效的 AAAAA 记录。


after:date

验证的字段必须是给定日期后的值。这个日期将会通过 PHP 函数 strtotime 来验证。

'start_date' => 'required|date|after:tomorrow'
  • 你也可以指定其它的字段来比较日期:
'finish_date' => 'required|date|after:start_date'

after_or_equal:date

验证的字段必须等于给定日期之后的值。更多信息请参见 after 规则。


alpha

验证的字段必须完全是字母的字符。


alpha_dash

验证的字段可能具有字母数字、破折号-以及下划线_


alpha_num

验证的字段必须完全是字母、数字。


array

验证的字段必须是一个 PHP 数组。


before:date

验证的字段必须是给定日期之前的值。这个日期将会通过 PHP 函数 strtotime 来验证。

before_or_equal:date

验证的字段必须是给定日期之前或之前的值。这个日期将会使用 PHP 函数 strtotime 来验证。


between:min,max

验证的字段的大小必须在给定的 minmax 之间。字符串、数字、数组或是文件大小的计算方式都用 size 方法进行评估。


boolean

验证的字段必须能够被转换为布尔值。可接受的参数为 truefalse10"1" 以及 "0"


confirmed

验证的字段必须和 foo_confirmation 的字段值一致。例如,如果要验证的字段是 password,输入中必须存在匹配的 password_confirmation 字段。


date

验证的字段值必须是通过 PHP 函数 strtotime 校验的有效日期。


date_equals:date

验证的字段必须等于给定的日期。该日期会被传递到 PHP 函数 strtotime


date_format:format

验证的字段必须与给定的格式相匹配。你应该只使用 datedate_format 其中一个用于验证,而不应该同时使用两者。


different:field

验证的字段值必须与字段 field 的值不同。


digits:value

验证的字段必须是数字,并且必须具有确切的值。


digits_between:min,max

验证的字段的长度必须在给定的 minmax 之间。


dimensions

验证的文件必须是图片并且图片比例必须符合规则:

'avatar' => 'dimensions:min_width=100,min_height=200'
  • 可用的规则为: min_widthmax_widthmin_heightmax_heightwidthheightratio
  • 比例应该使用宽度除以高度的方式来约束。这样可以通过 3/2 这样的语句或像 1.5 这样的浮点的约束:
'avatar' => 'dimensions:ratio=3/2'
  • 由于此规则需要多个参数,因此你可以 Rule::dimensions 方法来构造可读性高的规则:
use Illuminate\Validation\Rule;
Validator::make($data, [
    'avatar' => [
        'required',
        Rule::dimensions()->maxWidth(1000)->maxHeight(500)->ratio(3 / 2),
    ],
]);

distinct

验证数组时,指定的字段不能有任何重复值。

'foo.*.id' => 'distinct'

email

验证的字段必须符合 e-mail 地址格式。


exists:table,column

验证的字段必须存在于给定的数据库表中。

  • Exists 规则的基本使用方法
'state' => 'exists:states' 
  • 指定自定义字段名称
'state' => 'exists:states,abbreviation'
  • 如果你需要指定 exists 方法用来查询的数据库。你可以通过使用语法将数据库的名称添加到数据表前面来实现这个目的:
'email' => 'exists:connection.staff,email'
  • 如果要自定义验证规则执行的查询,可以使用 Rule 类来定义规则。在这个例子中,我们使用数组指定验证规则,而不是使用 | 字符来分隔它们:
use Illuminate\Validation\Rule;
Validator::make($data, [
    'email' => [
        'required',
        Rule::exists('staff')->where(function ($query) {
            $query->where('account_id', 1);
        }),
    ],
]);

file

验证的字段必须是成功上传的文件。


filled

验证的字段在存在时不能为空。


image

验证的文件必须是一个图像 jpegpngbmpgif、或 svg


in:foo,bar,...

验证的字段必须包含在给定的值列表中。因为这个规则通常需要你 implode 一个数组,Rule::in 方法可以用来构造规则:

use Illuminate\Validation\Rule;
Validator::make($data, [
    'zones' => [
        'required',
        Rule::in(['first-zone', 'second-zone']),
    ],
]);

in_array:anotherfield

验证的字段必须存在于另一个字段 anotherfield 的值中。


integer

验证的字段必须是整数。


ip

验证的字段必须是 IP 地址。


ipv4

验证的字段必须是 IPv4 地址。


ipv6

验证的字段必须是 IPv6 地址。


json

验证的字段必须是有效的 JSON 字符串。


max:value

验证中的字段必须小于或等于 value。字符串、数字、数组或是文件大小的计算方式都用 size 方法进行评估。


mimetypes:text/plain,...

验证的文件必须与给定 MIME 类型之一匹配:

'video' => 'mimetypes:video/avi,video/mpeg,video/quicktime'
  • 要确定上传文件的 MIME 类型,会读取文件的内容来判断 MIME 类型,这可能与客户端提供的 MIME 类型不同。

mimes:foo,bar,...

验证的文件必须具有与列出的其中一个扩展名相对应的 MIME 类型。

  • MIME 规则基本用法
'photo' => 'mimes:jpeg,bmp,png'
  • 即使你可能只需要验证指定扩展名,但此规则实际上会验证文件的 MIME 类型,其通过读取文件的内容以猜测它的 MIME 类型。

  • 这个过程看起来只需要你指定扩展名,但实际上该规则是通过读取文件的内容并判断其 MIME 的类型来验证的。

  • 可以在链接中找到完整的 MIME 类型列表及其相应的扩展名:


min:value

验证中的字段必须具有最小值。字符串、数字、数组或是文件大小的计算方式都用 size 方法进行评估。


nullable

验证的字段可以为 null。这在验证基本数据类型时特别有用,例如可以包含空值的字符串和整数。


not_in:foo,bar,...

验证的字段不能包含在给定的值列表中。Rule::notIn 方法可以用来构建规则:

Validator::make($data, [
    'toppings' => [
        'required',
        Rule::notIn(['sprinkles', 'cherries']),
    ],
]);

numeric

验证的字段必须是数字。


present

验证的字段必须存在于输入数据中,但可以为空。


regex:pattern

验证的字段必须与给定的正则表达式匹配。

  • 注意: 当使用 regex 规则时,你必须使用数组,而不是使用 | 分隔符,特别是如果正则表达式包含 | 字符。

required

验证的字段必须存在于输入数据中,而不是空。如果满足以下条件之一,则字段被视为

  • 该值为 null.
  • 该值为空字符串。
  • 该值为空数组或空的 可数 对象。
  • 该值为没有路径的上传文件。

required_if:anotherfield,value,...

如果指定的其它字段 anotherfield 等于任何一个 value 时,被验证的字段必须存在且不为空。


required_unless:anotherfield,value,...

如果指定的其它字段 anotherfield 等于任何一个 value 时,被验证的字段不必存在。


required_with:foo,bar,...

只要在指定的其他字段中有任意一个字段存在时,被验证的字段就必须存在并且不能为空。


required_with_all:foo,bar,...

只有当所有的其他指定字段全部存在时,被验证的字段才必须存在并且不能为空。


required_without:foo,bar,...

只要在其他指定的字段中有任意一个字段不存在,被验证的字段就必须存在且不为空。


required_without_all:foo,bar,...

只有当所有的其他指定的字段都不存在时,被验证的字段才必须存在且不为空。


same:field

给定字段必须与验证的字段匹配。


size:value

验证的字段必须具有与给定值匹配的大小。对于字符串来说,value 对应于字符数。对于数字来说,value 对应于给定的整数值。对于数组来说, size 对应的是数组的 count 值。对文件来说,size 对应的是文件大小(单位 kb )。


string

验证的字段必须是字符串。如果要允许该字段的值为 null ,就将 nullable 规则附加到该字段中。


timezone

验证的字段必须是有效的时区标识符,会根据 PHP 函数 timezone_identifiers_list 来判断。


unique:table,column,except,idColumn

验证的字段在给定的数据库表中必须是唯一的。如果没有指定 column,将会使用字段本身的名称。

  • 指定自定义字段名称:
'email' => 'unique:users,email_address'
  • 自定义数据库连接

  • 有时,你可能需要为验证程序创建的数据库查询设置自定义连接。上面的例子中,将 unique:users 设置为验证规则,等于使用默认数据库连接来查询数据库。如果要对其进行修改,请使用语法指定连接和表名:

'email' => 'unique:connection.users,email_address'
  • 强迫 Unique 规则忽略指定 ID:

  • 如果你想在进行字段唯一性验证时忽略指定 ID 。例如,在更新个人资料页面会包含用户名、邮箱和地点。这时你会想要验证更新的 E-mail 值是否唯一。如果用户仅更改了用户名字段而没有改 E-mail 字段,就不需要抛出验证错误,因为此用户已经是这个 E-mail 的拥有者了。

  • 使用 Rule 类定义规则来指示验证器忽略用户的 ID。 这个例子中通过数组来指定验证规则,而不是使用 | 字符来分隔:

Validator::make($data, [
    'email' => [
        'required',
        Rule::unique('users')->ignore($user->id),
    ],
]);
  • 如果你的数据表使用的主键名称不是 id,那就在调用 ignore 方法时指定字段的名称:
'email' => Rule::unique('users')->ignore($user->id, 'user_id')
  • 增加额外的 Where 语句:

  • 你也可以通过 where 方法指定额外的查询条件。例如,我们添加 account_id1 的约束:

'email' => Rule::unique('users')->where(function ($query) {
    $query->where('account_id', 1);
})

url

验证的字段必须是有效的 URL

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容

  • 1、简介 Laravel 提供了多种方法来验证应用输入数据。默认情况下,Laravel 的控制器基类使用Valid...
    伊Summer阅读 1,524评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 验证 简介 Laravel 对验证应用的输入数据提供了多中途径的实现。默认的,Laravel 的基础控制器类使用了...
    Dearmadman阅读 10,200评论 5 8
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,172评论 1 44
  • 每年到这个季节,每次看到她,不论是阳光的日子,也不论是寒风凛冽中,不管她的容颜鲜亮光洁,还是尽显风霜,我统统都爱,...
    如我所意阅读 290评论 0 0