Day08-为了让表单资料不要太过自大,给予其正确的绝望-Validation(I)

标题参考来源

大家好!
今天要来介绍 Laravel Validation~
Laravel 提供了多种验证规则,
让我们可以轻松的实作表单验证功能。

required

表示该栏位为必填。

另外只要满足以下四种条件之一,
即视为 Null 喔。

  1. The value is null.
  2. The value is an empty string.
  3. The value is an empty array or empty Countable object.
  4. The value is an uploaded file with no path.

其中 required 还有多种变化用法,
以下会将互为反义的放一起做个简单介绍。

required_if / required_unless

  • required_if:anotherfield,value,…
    • 如果指定栏位等於指定 Value,则此栏位不可为空。
  • required_unless:anotherfield,value,...
    • 如果指定栏位不等於指定 Value,则此栏位不可为空。

required_with / required_without

  • required_with:foo,bar,...
    • 指定栏位有 present 且不为空时,则此栏位不可为空。
  • required_without:foo,bar,…
    • 指定栏位没 present 且为空时,则此栏位不可为空。

required_with_all / required_without_all

  • required_with_all:foo,bar,…
    • 指定栏位全部都有 present 且不为空时,则此栏位不可为空。
  • required_without_all:foo,bar,…
    • 指定栏位全部都没 present 且为空时,则此栏位不可为空。

nullable

表示该栏位可为空。

关於 Null 与空字串

app/Http/Kernel.php 中有两个 global middleware 会将空字串一步步转化成 Null。

src/Illuminate/Foundation/Http/Middleware/TrimStrings.php


该 Middleware 会清除字串头尾的空白字符。
假如有长度8的空字串经过这个 Middleware,
就会被转换成长度0的空字串。

src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php


该 Middleware 会将长度为0的空字串转换成 Null。

经过上面两个 Middleware 的转换後,
再长的空字串都会被转化成 Null
所以如果不想让一些栏位因为 Value 是 Null 而被阻挡的话,
记得加上 nullable 喔。

present

表单内需有该栏位,
但可接受 Value 为 Null。

unique

  • unique:table,column,except,idColumn
    1. 第一个参数为资料表名称或 Eloquent model
    2. 第二个参数为资料表栏位名称

该用法我们在第二天实作会员注册时有用到,
unique 会帮我们验证表单栏位内的 Value 在指定的资料表栏位中是否为唯一值。

$request->validate([
    'email' => 'required|email|unique:users,email',
]);

exists

  • exists:table,column
    1. 第一个参数为资料表名称或 Eloquent model
    2. 第二个参数为资料表栏位名称

使用 exists 验证栏位内的 Value 必须存在於指定的资料表栏位中。
下面的例子为验证表单栏位中的 postId 必须存在 posts 资料表中。

$request->validate([
    'postId' => 'required|integer|exists:posts,id',
]);

regex

  • regex:pattern
    • 必须与正则匹配
  • not_regex:pattern
    • 必须与正则不匹配
$request->validate([
    'email' => ['required', 'regex:/^.+@.+$/i'],
]);

如果想在 Validation 中使用 regex,
请尽量使用阵列指定验证规则,
特别是在正则内有 | 的时候。

今天就先这样啦,
认识了一些验证规则~
明天来认识如何将相同的表单验证重复使用吧!
大家明天见啦~
若文章有任何问题,
还请大家不吝赐教!

参考资料:


<<:  Day 9 学习线上服务思考用户的数位防身术-国外篇

>>:  伪类与伪元素-30天学会HTML+CSS,制作精美网站

[DAY 7] _GPIO口的八种模式

接续昨天说完暂存器的看法,再来讲一下GPIO口的八种模式,两大类分成输出跟输入细分有以下8种 1.开...

Day27 React-实作todoList(二)建立子元件

Header元件 第一个元件先从 Header.js 开始 Header要负责 显示标题 待办事项 ...

[Day3] Practice Resources

CTF 通常会依照各种领域区分, Web 、 Reverse 、 Pwn 、 Crypto 等。而渗...

[Day 28] 关於 InAppBrowser

InAppBrowser 说在最前面的,以目前的 iOS / Android 生态来看,所谓的 In...

EP 20: Custom Launch Screen for Android

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...