26 表单处理与验证之表单验证

在上一篇文章中,我们探讨了如何处理请求数据,了解了 Laravel 如何轻松地接收和处理用户提交的表单。今天,将重点关注如何进行表单验证。确保用户输入的数据有效和安全是任何 web 应用程序的重要部分,Laravel 为我们提供了强大的验证功能。

使用内置验证规则

Laravel 提供了多种内置的验证规则,可以轻松地对输入数据进行验证。我们可以使用 validate 方法,对请求的数据应用多个验证规则。

示例:基本验证

假设我们有一个用户注册表单,其中包含 nameemailpassword 字段。以下是如何对这些字段进行验证的示例:

1
2
3
4
5
6
7
8
9
10
11
12
use Illuminate\Http\Request;

public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
]);

// 处理验证通过后的逻辑
}

在这个示例中:

  • name 字段是必填的,且必须为字符串,最大长度为 255 字符。
  • email 字段是必填的,必须为有效的email格式,最大长度为 255 字符,并且必须在 users 表中是唯一的。
  • password 字段是必填的,必须为字符串,最小长度为 8 字符,并且要求用户确认输入。

自定义错误消息

我们可以自定义验证错误消息,以提供更友好的反馈。可以在 validate 方法中传递第三个参数,或者使用 Validatormake 方法:

1
2
3
4
5
6
$validatedData = $request->validate([
'email' => 'required|email',
], [
'email.required' => '电子邮件地址是必需的。',
'email.email' => '请输入一个有效的电子邮件地址。',
]);

处理验证失败的情况

当验证失败时,Laravel 会自动将用户重定向回原页面,并将验证错误消息存入 session 中。你可以在视图中轻松地显示这些错误消息。

示例:在 Blade 视图中显示错误

在 Blade 视图中,你可以使用 @error 指令来展示验证错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif

<form action="{{ route('register') }}" method="POST">
@csrf
<input type="text" name="name" value="{{ old('name') }}">
@error('name')
<div class="alert alert-danger">{{ $message }}</div>
@enderror

<input type="email" name="email" value="{{ old('email') }}">
@error('email')
<div class="alert alert-danger">{{ $message }}</div>
@enderror

<input type="password" name="password">
@error('password')
<div class="alert alert-danger">{{ $message }}</div>
@enderror

<button type="submit">注册</button>
</form>

在上面的示例中,old('name') 可以让用户在提交失败后保留输入值,@error 指令则用于显示特定字段的错误信息。

其他常用验证规则

除了前面提到的规则外,Laravel 还提供了许多其他内置的验证规则,例如:

  • maxmin:用于限制字符串或数字的大小。
  • date:验证输入是否为有效的日期。
  • image:验证文件是否为图片文件。
  • confirmed:用于验证确认字段。

多个规则组合

Laravel 允许我们为某个字段指定多个验证规则,通过竖线 | 将它们连接。例如:

1
2
3
$request->validate([
'username' => 'required|string|min:5|max:15|alpha_num',
]);

在此示例中,username 字段必须是必填的字符串,且长度在 5 到 15 之间,并且只能包含字母和数字。

小结

在本篇文章中,我们深入了解了如何在 Laravel 中进行表单验证。我们见到了如何使用内置的验证规则,如何自定义错误消息,处理验证失败的情况,以及常用的验证规则。确保用户输入的数据有效可以显著提高应用程序的安全性和用户体验。

在下一篇文章中,我们将探讨如何创建自定义验证规则,以便满足特定的业务需求,敬请期待!

26 表单处理与验证之表单验证

https://zglg.work/laravel-zero/26/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论