laravel validate验证参数说明

1,312次阅读
没有评论

文章目录
validate的介绍
validate的使用
简单的表单验证
关于数组数据的注意事项
validate验证参数说明
accepted
active_url
after:date
after_or_equal:date
alpha
alpha_dash
alpha_num
array
before:date
before_or_equal:date
between:min,max
boolean
confirmed
date
date_equals:date
date_format:format
different:field
digits:value
digits_between:min,max
dimensions
distinct
‘foo.*.id’ => ‘distinct’
email
exists:table,column
file
filled
image
in:foo,bar,…
in_array:anotherfield
integer
ip
ipv4
ipv6
json
max:value
mimetypes:text/plain,…
mimes:foo,bar,…
MIME 规则基本用法
min:value
nullable
not_in:foo,bar,…
numeric
present
regex:pattern
required
required_if:anotherfield,value,…
same:field
size:value
string
timezone
url
结束
validate的介绍
Laravel提供了几种不同的方法来验证应用程序的传入数据。默认情况下,Laravel的基本控制器类使用ValidatesRequests特征,该特征提供了一种方便的方法,可以使用各种功能强大的验证规则来验证传入的HTTP请求。

validate的使用
以下为控制器方法

简单的表单验证
public function store(Request $request)
{
$validatedData = $request->validate([
‘title’ => ‘required|unique:posts|max:255’,
‘body’ => ‘required’,
]);

// The blog post is valid...

}

在这个例子里,如果 title字段没有通过 unique,那么不会检查 max 规则。规则会按照分配的顺序来验证。

关于数组数据的注意事项
如果你的 HTTP 请求包含一个 「嵌套」 参数(即数组),那你可以在验证规则中通过 「点」 语法来指定这些参数。

$this->validate($request, [
‘title’ => ‘required|unique:posts|max:255’,
‘author.name’ => ‘required’,
‘author.description’ => ‘required’,
]);

validate验证参数说明
accepted
验证的字段必须为 yes、 on、 1、或 true。这在确认「服务条款」是否同意时相当有用。

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

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
验证的字段的大小必须在给定的 min 和 max 之间。字符串、数字、数组或是文件大小的计算方式都用 size 方法进行评估。

当需要验证表单数据中数字的大小时,在验证规则中一定要加入 Numeric 或 Integer 其一,size、between、max、min这些验证才会起作用。

boolean
验证的字段必须能够被转换为布尔值。可接受的参数为 true、false、1、0、“1” 以及 “0”。

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

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

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

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

different:field
验证的字段值必须与字段 (field) 的值不同。

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

digits_between:min,max
验证的字段的长度必须在给定的 min 和 max 之间。

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

‘avatar’ => ‘dimensions:min_width=100,min_height=200’

可用的规则为: min_width、 max_width 、 min_height 、 max_height 、 width 、 height 、 ratio。

比例应该使用宽度除以高度的方式来约束。这样可以通过 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
验证的文件必须是一个图像( jpeg、png、bmp、gif、或 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 的类型来验证的。

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

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

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

use Illuminate\Validation\Rule;

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 来判断。

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

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2023 年 10 月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026 Jay 2025-12-22 09...
共推空天领域智能化升级!趋境科技与金航数码强强联手

共推空天领域智能化升级!趋境科技与金航数码强强联手

共推空天领域智能化升级!趋境科技与金航数码强强联手 十三 2025-12-09 18:18:41 来源:量子位...
起底“豆包手机”:核心技术探索早已开源,GUI Agent布局近两年,“全球首款真正的AI手机”

起底“豆包手机”:核心技术探索早已开源,GUI Agent布局近两年,“全球首款真正的AI手机”

起底“豆包手机”:核心技术探索早已开源,GUI Agent布局近两年,“全球首款真正的AI手机” 西风 202...
面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25 鹭羽 2025-12-13 22:37...
5天连更5次,可灵AI年末“狂飙式”升级

5天连更5次,可灵AI年末“狂飙式”升级

5天连更5次,可灵AI年末“狂飙式”升级 思邈 2025-12-10 14:28:37 来源:量子位 让更大规...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
小冰之父李笛智能体创业,公司取名Nextie!陆奇是股东

小冰之父李笛智能体创业,公司取名Nextie!陆奇是股东

小冰之父李笛智能体创业,公司取名Nextie!陆奇是股东 Jay 2025-12-09 08:26:01 来源...
梁文锋,Nature全球年度十大科学人物!

梁文锋,Nature全球年度十大科学人物!

梁文锋,Nature全球年度十大科学人物! 一水 2025-12-09 09:46:23 来源:量子位 来自安...
起底“豆包手机”:核心技术探索早已开源,GUI Agent布局近两年,“全球首款真正的AI手机”

起底“豆包手机”:核心技术探索早已开源,GUI Agent布局近两年,“全球首款真正的AI手机”

起底“豆包手机”:核心技术探索早已开源,GUI Agent布局近两年,“全球首款真正的AI手机” 西风 202...
摩尔线程新一代GPU架构10天后发布

摩尔线程新一代GPU架构10天后发布

摩尔线程新一代GPU架构10天后发布 思邈 2025-12-09 15:46:09 来源:量子位 国内首个聚焦...
极客公园创新大会 2026在京落幕,罗永浩、张楠、何小鹏、刘靖康等共议 AI 时代「进程由我」

极客公园创新大会 2026在京落幕,罗永浩、张楠、何小鹏、刘靖康等共议 AI 时代「进程由我」

极客公园创新大会 2026在京落幕,罗永浩、张楠、何小鹏、刘靖康等共议 AI 时代「进程由我」 henry 2...