产业气象站|& Laravel 表单验证数组的数据,3分钟短文
引言
本文说一个小的知识点 , 在表单验证中 , 对数组数据进行验证 , 我们需要进行两项 , 一项是数组本身的验证 , 一项是数组元素的验证 。
文章图片
学习时间
例如有一个POST请求过来的数据 , 由3个数组组成 , name , amount , description 。 三个字段的验证需求如下:
name字段 , 必填 , 每个元素唯一 , 且至少有3个元素
amount字段 , 必填 , 元素要求都是整数 , 且最少有1个元素
description字段 , 必填 , 元素可有可无 , 且元素都是字符串 。
明确了需求 , 我们发现上述的验证 , laravel内置的规则基本可以解决 。 只是对于字段是数组 , 且数组长度满足某些条件的要求 , 有些苛刻 。 具体如何实现呢?
laravel表单验证规则中 , 使用星号 , 可以匹配数组的元素 。 那么对于name字段 , 我们的验证规则是这样的:
$validator=Validator::make($request->all(),["name"=>"required|array|min:3","name.*"=>"required|string|distinct|min:3",])
第一步验证name必填 , 必须为数组 , 且至少有3个元素;第二步 , 使用星号匹配所有的数组元素 , 必填 , 字符串类型 , 唯一性 。
那么这样 , 其他两个字段也很好实现了:
"amount"=>"required|array|min:1","amount.*"=>"required|integer|min:1","description"=>"required|array","description.*"=>"required|string",
前后端分离
对于当下前后端分离的开发模式 , 前端使用VUE网络请求传递过来的数据 , 如何验证呢?其实 , 如果相似的接口 , 上一节的方式也完全可用 。 但我们讨论一种更复杂一些的情形 , 比如表单传递过来的是这样的数组:
【产业气象站|& Laravel 表单验证数组的数据,3分钟短文】[0]=>Array([item_id]=>1[item_no]=>3123[size]=>35)[1]=>Array([item_id]=>2[item_no]=>7688[size]=>56)
这是一个二维数组 , 二维数组内元素都是相同的键值对 。 那么在laravel的验证器中 , 应该如何写呢?
这与指定了字段名的数组不同 , 这个数组的键是自动编排的数字 , 所以 , 我们需要通配键名 。 验证起来应该这样的:
$this->validate($request,["*.item_id"=>"required|integer","*.item_no"=>"required|integer","*.size"=>"required|max:191",])
这样就是针对所有数组内指定的键的数据进行验证了 。
写在最后
本文介绍了两种表单格式的数据的验证 , 一种是指定字段名的一维数组 , 一种是二维关联数组的验证 , 如果有条件的大家可以看一下框架在这种处理验证规则的处理逻辑代码 。
【来源:高琪娱乐站】
声明:转载此文是出于传递更多信息之目的 。 若有来源标注错误或侵犯了您的合法权益 , 请作者持权属证明与本网联系 , 我们将及时更正、删除 , 谢谢 。 邮箱地址:newmedia@xxcb.cn
推荐阅读
- 辉常观察|产业互联网:区块链与数字货币的分水岭,原创
- 精选热点资讯|服务江西产业发展,晏斌:围绕直播大赛
- 爱集微|投向智能制造/人工智能等领域,欣旺达子公司参与设立产业基金
- 产业气象站|华为新款移动路由双网双通在线,告别断网烦恼,手机一碰就能上网
- 中国蓝新闻|“薅羊毛”入刑越城法院一审宣判,坚决斩断灰色产业链
- 上游新闻|智博会上将签约GPP芯片生产项目,关注智博会|30多家电子产业企业构建梁平电子信息产业链
- 北京商报网|2020中国电信5G产业创新联盟北京站启动
- 家族战队|就读懂了湖南互联网产业,读懂了这些话
- 52未来社区|中国全面支持的半导体产业会怎么样?,新导航芯片领先GPS
- c114通信网|深度解读:2020年光电子产业将迎难而上