3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?

时间:2022-07-23
本文章向大家介绍3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

引言

web应用程序公开访问几乎没有不带用户交互的,难免要接收用户输入的奇奇怪怪的东西。对于后端程序,必须对输入的内容进行有效性过滤。

这就是本文的重点,说一说laravel中输入请求的校验。

学习时间

假设请求Request内有一个 names 字段,传送的是一个数组,对于数组,我们应该如何校验呢?其实需要两步,第一步校验names字段本身必须是数组,其次校验数组的元素规则。

用代码实现起来是这样的:

$validator = Validator::make($request->all(), [
    "names"    => "required|array|min:3",
    "names.*"  => "required|string|distinct|min:3",
]);

其中 Validator 是laravel门面内注册的校验类。在第一个规则下,验证了names字段必须为array类型,且长度至少为3。

接着使用星号匹配数组内元素,要求都是string字符串,且不得重复 distinct,且每个字符串长度最小为3。

laravel 5.5 以后的版本,你无需手动实例化 Validaor 对象,可以在 Request 对象直接调用 validate 方法实现。代码这样写:

$data = $request->validate([
    "name"    => "required|array|min:3",
    "name.*"  => "required|string|distinct|min:3",
]);

上面两种方式校验之后,都可以使用 $validator->fails() 方法判断是否通过,如果 true 就是有错误,可以获取 error message,并返回给前端;如果 false,就是校验通过了,继续下面的处理流程。

自定义验证

laravel内你也可以自定义验证规则,使用 artisan 命令新建一个验证类:

php artisan make:request SomeRequest