laravel中使用 Form Request 可将验证逻辑从控制器分离,通过 php artisan make:request StoreUserRequest 创建请求类,在 rules() 方法中定义验证规则,如字段必填、格式限制等;可在 messages()中自定义错误提示;控制器中直接类型提示该类,验证自动执行,无需手动调用;还可重写 authorize()控制权限,使代码更清晰、易维护。

在 Laravel 中,表单请求验证类(Form Request)是一种将验证逻辑从控制器中分离出来的好方法。它不仅让代码更清晰,也便于复用和测试。下面教你如何使用 Laravel 的 Form Request 来管理 表单验证。
创建表单请求类
使用 Artisan 命令可以快速生成一个表单请求类:
php artisan make:request StoreUserRequest
这个命令会在 app/http/Requests 目录下生成一个 StoreUserRequest.php 文件。
定义验证规则
打开刚创建的请求类,找到 rules() 方法,添加你需要的验证规则:
public function rules()
{
return [
‘name’ => ‘required|String|max:255′,
’email’ => ‘required|email|unique:users’,
‘password‘ => ‘required|min:8|confirmed’,
];
}
这些规则会在请求到达控制器之前自动执行。如果验证失败,Laravel 会自动重定向或返回jsON 错误响应。
自定义错误消息
你可以在请求类中重写 messages() 方法来自定义错误提示:
public function messages()
{
return [
‘name.required’ => ‘ 姓名不能为空 ’,
’email.email’ => ‘ 请输入有效的 邮箱 地址 ’,
];
}
在控制器中使用
在控制器的方法中,直接类型提示你创建的请求类,Laravel 会自动注入并验证:
use AppHttpRequestsStoreUserRequest;
public function store(StoreUserRequest $request)
{
// 验证已通过,安全获取数据
$validated = $request->validated();
// 处理用户保存逻辑 …
}
注意:不需要手动调用validate(),验证会在进入方法前完成。
控制授权逻辑(可选)
如果你需要检查用户是否有权限提交这个表单,可以修改 authorize() 方法:
public function authorize()
{
return $this->user()->can(‘create-user’); // 示例:基于权限
}
如果返回false,会抛出 403 异常。你可以根据业务需求判断是否启用此功能。
基本上就这些。用 Form Request 能让你的控制器更简洁,验证逻辑更集中,后期维护也更容易。不复杂但容易忽略。
以上就是 Laravel 表单请求验证类怎么用_Laravel Form Request 分离验证逻辑教程的详细内容,更多请关注 php 中文网其它相关文章!