📅  最后修改于: 2023-12-03 15:38:19.159000             🧑  作者: Mango
在 Laravel 8 中,我们可以使用 validate
方法来验证用户提交的请求。如果验证失败,Laravel 会自动将错误信息存储在 $errors
变量中,以便我们在视图中显示这些错误。
我们可以使用 @if
和 @foreach
Blade 指令来显示错误信息。下面是一个简单的表单,它会验证用户是否输入了名称:
<form method="POST" action="/hello">
@csrf
<label for="name">名称:</label>
<input type="text" name="name" id="name">
@if ($errors->has('name'))
<div class="alert alert-danger">{{ $errors->first('name') }}</div>
@endif
<button type="submit">提交</button>
</form>
在上面的代码中,我们使用了 @if
指令来检查 $errors->has('name')
是否为真,如果是,我们就显示一个包含错误信息的 div 元素。
如果你的表单有多个字段需要验证,你可以使用 @foreach
指令来遍历 $errors->all()
数组。
如果你想修改默认的错误消息,你可以在 resources/lang
文件夹中创建一个语言文件,例如 zh_CN/validation.php
。
在这个文件中,你可以使用 array_dot
函数来定义错误消息。例如,如果你想修改 required
规则的默认错误消息,你可以这样定义:
<?php
return [
'required' => '请输入 :attribute',
];
在上面的代码中,:attribute
会被替换成验证的字段名称。
我们还可以通过创建自定义表单请求类来自定义验证规则和错误消息。
首先,我们可以使用 make:request
Artisan 命令来生成一个表单请求类:
php artisan make:request ContactFormRequest
然后,在生成的请求类中,我们可以定义 rules
和 messages
方法来分别定义验证规则和错误消息。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ContactFormRequest extends FormRequest
{
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
];
}
public function messages()
{
return [
'name.required' => '请输入您的姓名。',
'email.required' => '请输入您的邮箱地址。',
'email.email' => '请输入有效的邮箱地址。',
'message.required' => '请输入您的留言内容。',
];
}
}
最后,在控制器中使用自定义请求类:
<?php
namespace App\Http\Controllers;
use App\Http\Requests\ContactFormRequest;
class ContactFormController extends Controller
{
public function store(ContactFormRequest $request)
{
// 表单验证通过,执行存储逻辑
}
}
在自定义的请求类中,我们还可以定义 authorize
方法来检查用户是否有权限提交表单。