信息发布→ 登录 注册 退出

Laravel如何使用Form Request进行表单验证

发布时间:2025-11-18

点击量:
Form Request用于分离验证逻辑,通过artisan命令生成类,定义rules、messages和authorize方法,在控制器中注入使用,自动验证并返回错误信息,使代码更清晰易维护。

在 Laravel 中,Form Request 是一种专门用于处理表单验证的类,它将验证逻辑从控制器中分离出来,使代码更清晰、更易于维护。通过创建自定义的 Form Request 类,你可以集中管理验证规则、错误消息和授权逻辑。

创建 Form Request 类

使用 Artisan 命令可以快速生成一个 Form Request 类:

artisan make:request StoreUserRequest

该命令会在 app/Http/Requests 目录下生成 StoreUserRequest.php 文件(如果目录不存在会自动创建)。

定义验证规则

打开生成的 Request 类,找到 rules() 方法,在其中返回需要的验证规则:

public function rules()
{
    return [
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:8|confirmed',
    ];
}

这些规则会自动在请求提交时生效。

自定义错误消息

你可以在 Request 类中重写 messages() 方法,为特定字段定义更友好的错误提示:

public function messages()
{
    return [
        'name.required' => '姓名不能为空',
        'email.email' => '请输入有效的邮箱地址',
        'password.min' => '密码至少需要 8 位',
    ];
}

控制访问权限(可选)

如果你希望限制谁可以提交这个表单,可以修改 authorize() 方法:

public function authorize()
{
    // 例如:只有管理员可以创建用户
    return $this->user()->hasRole('admin');
}

返回 false 时会抛出 403 禁止访问异常。

在控制器中使用 Form Request

在控制器方法中,直接将 Form Request 类作为参数注入,Laravel 会自动执行验证:

use App\Http\Requests\StoreUserRequest;

public function store(StoreUserRequest $request)
{
    // 验证已通过,可以直接使用数据
    $validated = $request->validated();
    User::create($validated);
    return redirect('/users');
}

如果验证失败,Laravel 会自动重定向回上一页,并将错误信息存入 session,前端可通过 $errors 变量获取并显示。

基本上就这些。用 Form Request 能让控制器更干净,验证逻辑更集中,适合中大型项目使用。

标签:# php  # word  # laravel  # 前端  # app  # session  # ai  # 邮箱  # red  # String  # 表单验证  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!