Laravel如何处理表单验证?(Requests代码示例)
发布时间 - 2025-12-16 00:00:00 点击率:次Laravel 推荐使用 Form Request 封装表单验证逻辑,通过 php artisan make:request 生成请求类,在 rules() 中定义规则(如 title.required、content.min),支持 messages() 自定义提示、authorize() 控制权限,并在控制器中类型提示自动验证。
在 Laravel 中,表单验证推荐使用 Form Request(自定义请求类)来封装验证逻辑,它让控制器更干净、验证更复用、错误响应更统一。
创建 Form Request 类
运行 Artisan 命令生成一个专门处理表单验证的请求类:
php artisan make:request StorePostRequest该命令会在 app/Http/Requests 目录下生成一个 PHP 类,Laravel 会自动为你填充基础结构。
定义验证规则(rules() 方法)
打开刚生成的 StorePostRequest.php,在 rules() 方法中写入字段规则。例如提交文章时验证标题和内容:
public function rules()
{
return [
'title' => ['required', 'string', 'max:255'],
'content' => ['required', 'string', 'min:10'],
'catego
ry_id' => ['nullable', 'exists:categories,id'],
];
}
注意:exists:categories,id 表示该值必须存在于 categories 表的 id 字段中;nullable 允许为空但不校验其他规则。
可选:添加自定义错误消息和验证前钩子
你可以在同一请求类中补充:
-
messages():返回自定义错误提示(键名格式为"字段名.规则名") -
withValidator():在验证执行后、抛出异常前对 Validator 实例做扩展(比如动态添加规则) -
authorize():控制是否允许当前用户发起该请求(返回true或false)
示例:
public function authorize()
{
return auth()->check(); // 仅登录用户可提交
}
public function messages()
{
return [
'title.required' => '标题不能为空',
'content.min' => '内容至少需要 :min 个字符',
];
}
在控制器中使用
直接将请求类类型提示到控制器方法参数中,Laravel 会自动执行验证。验证失败时自动重定向并返回错误(Web)或返回 422 JSON 响应(API):
use App\Http\Requests\StorePostRequest;
public function store(StorePostRequest $request)
{
$validated = $request->validated(); // 获取已验证的数据(自动过滤未声明字段)
Post::create($validated);
return redirect()->route('posts.index')->with('success', '文章已发布');
}
无需手动调用 $request->validate(...),所有逻辑已解耦到请求类中。
基本上就这些 —— Form Request 是 Laravel 推荐的标准做法,既清晰又易维护,尤其适合中大型项目中的表单场景。
# php
# laravel
# js
# json
# go
# app
# red
# 封装
# 表单验证
# Nullable
# http
# 自定义
# 表单
# 推荐使用
# 为空
# 类中
# 器中
# 你可以
# 为你
# 会在
# 并在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么判断请求类型_Laravel Request isMethod用法
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Laravel中的withCount方法怎么高效统计关联模型数量
如何获取上海专业网站定制建站电话?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何在云主机快速搭建网站站点?
网页设计与网站制作内容,怎样注册网站?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
如何在IIS中新建站点并配置端口与物理路径?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel如何处理表单验证?(Requests代码示例)
微信公众帐号开发教程之图文消息全攻略
Python文件操作最佳实践_稳定性说明【指导】
教学论文网站制作软件有哪些,写论文用什么软件
?
如何在云主机上快速搭建多站点网站?
Laravel如何配置任务调度?(Cron Job示例)
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
网站制作软件有哪些,制图软件有哪些?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
如何正确下载安装西数主机建站助手?
Android Socket接口实现即时通讯实例代码
如何实现javascript表单验证_正则表达式有哪些实用技巧
如何正确选择百度移动适配建站域名?
如何快速辨别茅台真假?关键步骤解析
如何快速搭建自助建站会员专属系统?
音响网站制作视频教程,隆霸音响官方网站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何用y主机助手快速搭建网站?
jQuery validate插件功能与用法详解
晋江文学城电脑版官网 晋江文学城网页版直接进入
JavaScript如何实现路由_前端路由原理是什么
如何在IIS管理器中快速创建并配置网站?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
开心动漫网站制作软件下载,十分开心动画为何停播?
PHP 500报错的快速解决方法
如何在Windows服务器上快速搭建网站?
jQuery中的100个技巧汇总
如何在阿里云高效完成企业建站全流程?
个人摄影网站制作流程,摄影爱好者都去什么网站?
Android仿QQ列表左滑删除操作
微信小程序制作网站有哪些,微信小程序需要做网站吗?
HTML 中如何正确使用模板变量为元素的 name 属性赋值
北京的网站制作公司有哪些,哪个视频网站最好?
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
javascript中闭包概念与用法深入理解
如何在宝塔面板中创建新站点?


ry_id' => ['nullable', 'exists:categories,id'],
];
}