Linux|3分钟短文 | Laravel 表单验证数组的数据

引言
本文说一个小的知识点 , 在表单验证中 , 对数组数据进行验证 ,我们需要进行两项 , 一项是数组本身的验证 , 一项是数组元素的验证 。
学习时间
例如有一个POST请求过来的数据 , 由3个数组组成 , name , amount , description 。 三个字段的验证需求如下:
- name字段 , 必填 , 每个元素唯一 , 且至少有3个元素
- amount字段 , 必填 , 元素要求都是整数 , 且最少有1个元素
- description字段 , 必填 , 元素可有可无 , 且元素都是字符串 。
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网络请求传递过来的数据 , 如何验证呢? 其实 , 如果相似的接口 , 上一节的方式也完全可用 。但我们讨论一种更复杂一些的情形 , 比如表单传递过来的是这样的数组:
[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'
);
这样就是针对所有数组内指定的键的数据进行验证了 。
写在最后
本文介绍了两种表单格式的数据的验证 , 一种是指定字段名的一维数组 , 一种是二维关联数组的验证 ,如果有条件的大家可以看一下框架在这种处理验证规则的处理逻辑代码 。
Happy coding :-)
【Linux|3分钟短文 | Laravel 表单验证数组的数据】我是@程序员小助手 , 持续分享编程知识 , 欢迎关注 。
推荐阅读
- 3分钟就能做好的营养早餐,味道鲜美口感好,小孩爱吃极了!
- 鸡蛋这样做太香了,不用蒸不用煎,早餐端上桌,3分钟就光盘,香
- 早餐迷上吃饼,不揉面不擀面,3分钟出锅,比包子油条好吃多了
- 最下饭的快手菜! 3分钟就能出锅, 连吃3大碗饭都嫌少!
- 花卷不要再蒸着吃了,试试着样做,3分钟就出锅,宣软又酥脆!
- 比烧烤还好吃孜然鱿鱼须,香辣可口,3分钟学会,吃上就停不下来
- 安乐死过山车|全球第一个安乐死过山车,3分钟结束生命,至今无人活着下来!
- 成本不足4元,盐都不放,上桌3分钟光盘,不愧是经典名菜
- 3分钟学会5种丸子的做法,超全,照着做成功率极高!
- 冰箱里刚拿出的冻肉,千万别拿水泡!教你1招,3分钟把冻肉解冻
