📅  最后修改于: 2023-12-03 14:43:50.964000             🧑  作者: Mango
在 Laravel 中,验证是一个非常重要的功能,可以验证用户提交的数据是否符合预期,以确保数据的正确性。本文将介绍 Laravel 验证的基本用法,包括验证规则、错误消息、自定义验证规则等。
Laravel 中内置了许多常用的验证规则,例如 required、email、numeric 等,还支持自定义规则。下面我们以验证一个用户注册表单为例,看一下如何使用 Laravel 验证规则。
use Illuminate\Http\Request;
public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email|max:255',
'password' => 'required|string|min:6|max:255|confirmed',
]);
// ...
}
在上面的代码中,我们使用了 validate
方法来验证请求中的表单数据,该方法接收一个数组作为参数,数组的键是表单字段,值是该字段需要满足的验证规则。例如 'name' => 'required|string|max:255'
表示 name
字段是必填的、必须是字符串、长度不超过 255 个字符。如果验证失败,则会自动将错误信息返回给客户端。
当验证失败时,Laravel 会自动将错误信息添加到表单数据中,我们可以通过 errors
方法访问这些错误信息。例如在 Blade 模板中可以这样显示错误消息:
@if ($errors->has('name'))
<div class="invalid-feedback">{{ $errors->first('name') }}</div>
@endif
其中 $errors
是 Laravel 提供的全局变量,用于访问验证错误消息。
除了使用 Laravel 内置的验证规则,我们还可以自定义规则来灵活应对各种验证场景。下面我们以验证用户名是否可用为例,介绍如何自定义验证规则。
use Illuminate\Contracts\Validation\Rule;
class UniqueUsername implements Rule
{
public function passes($attribute, $value)
{
return User::where('username', $value)->count() === 0;
}
public function message()
{
return 'The :attribute has already been taken.';
}
}
public function register(Request $request)
{
$validatedData = $request->validate([
'username' => ['required', 'string', 'max:255', new UniqueUsername],
// ...
]);
// ...
}
在上面的代码中,我们实现了一个名为 UniqueUsername
的验证规则,并将其作为 username
字段的验证规则。该规则查找数据库中是否已经存在相同的用户名,如果不存在则验证通过。
本文介绍了 Laravel 验证的基本用法,包括验证规则、错误消息、自定义验证规则等。通过学习本文,你应该能够掌握 Laravel 中的验证功能,以便在开发中灵活应对各种验证场景。