3分钟短文 | Laravel 表单验证数组的数据
时间:2022-07-24
本文章向大家介绍3分钟短文 | Laravel 表单验证数组的数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
引言
本文说一个小的知识点,在表单验证中,对数组数据进行验证, 我们需要进行两项,一项是数组本身的验证,一项是数组元素的验证。
学习时间
例如有一个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网络请求传递过来的数据,如何验证呢?其实,如果相似的接口,上一节的方式也完全可用。但我们讨论一种更复杂一些的情形,比如表单传递过来的是这样的数组:
[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 :-)
我是@程序员小助手,持续分享编程知识,欢迎关注。
- 孤立的SQL用户
- 如何卸载CDH(附一键卸载github源码)
- github & CSRF
- 如何使用Python读取大文件
- 介绍一种非常好用汇总数据的方式GROUPING SETS
- 史上最大的CPU Bug(幽灵和熔断的OS&SQLServer补丁)
- 数据库副本的自动种子设定(自增长)
- Git 项目推荐 | 基于go+protobuff 实现的分布式
- ReflectASM-invoke,高效率java反射机制原理
- Web应用渗透测试-本地文件包含
- shiro权限控制(二):分布式架构中shiro的实现
- Groovy实现原理分析——准备工作
- HBCTF第一场2个pwn题的简单分析
- ACM竞赛之输入输出(以C与C++为例)
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 反编译小程序记录
- 使用Selenium WebDriver,Python和Chrome编写您的第一个Web测试
- 神经网络架构搜索——可微分搜索(SGAS)
- 神经网络架构搜索——可微分搜索(Fair-DARTS)
- 一帧图像的Android之旅 :应用的首个绘制请求
- Mac免密码登录linux服务器
- 目标检测算法YOLO-V2详解
- 神经网络架构搜索——可微分搜索(Noisy DARTS)
- 教你使用 Jacoco 统计服务端代码覆盖率
- 如何在树莓派4B上设置EMQX开机自启动
- 如何使用 Ktor 快速开发 Web 项目
- 神经网络架构搜索——二值可微分搜索(BATS)
- UEFI 原理与编程 1 - UEFI开发环境EDK2搭建
- 【Unity】瞎做个宝石迷阵吧!(1)——构建场景
- VUE组件传值案例讲解