Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
发布时间 - 2025-12-13 00:00:00 点击率:次Laravel 提供灵活的表单验证机制,支持内置规则、闭包自定义及可复用的规则类,推荐使用 Form Request 解耦控制器逻辑,还可通过 ServiceProvider 全局注册规则提升复用性。
在 Laravel 中,表单请求验证是确保用户输入数据合法的重要环节。Laravel 提供了强大的 Validator 机制,除了使用内置规则外,还可以轻松自定义验证规则。下面教你如何写 Laravel 请求验证,以及如何创建自定义表单验证规则。
使用内置 Validator 验证请求
在控制器中,你可以通过 validate() 方法或使用 Validator 门面来验证请求数据。
示例:在控制器方法中验证表单
use Illuminate\Support\Facades\Validator;
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed',
]);
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
// 验证通过,继续处理逻辑
}
创建 Form Request 类进行验证
更推荐的方式是使用 Form Request,它将验证逻辑从控制器中解耦。
生成请求类:php artisan make:request StoreUserRequest
class StoreUserRequest extends FormRequest
{
public function authorize()
{
return true; // 控制是否授权该请求
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed',
];
}
}
在控制器中使用:
public function store(StoreUserRequest $request)
{
// 数据已自动验证,直接使用
User::create($request->validated());
}
自定义验证规则(使用闭包)
如果内置规则不够用,可以在验证时使用闭包来自定义逻辑。
示例:验证用户名不能为特定值
$validator = Validator::make($data, [
'username' => [
'required',
function ($attribute, $value, $fail) {
if (strtolower($value) === 'admin') {
$fail('用户名不能为 admin。');
}
},
],
]);
创建可复用的自定义验证规则
Laravel 允许你创建可复用的自定义规则类,适合复杂或多个地方使用的验证逻辑。
生成自定义规
则:
php artisan make:rule ValidAgeRule
class ValidAgeRule implements Rule
{
public function passes($attribute, $value)
{
return $value >= 18;
}
public function message()
{
return '年龄必须满 18 岁。';
}
}
在验证中使用:
'age' => ['required', new ValidAgeRule],
注册全局自定义规则(可选)
你也可以通过 Validator 门面向全局注册自定义规则,方便在多处使用。
在 AppServiceProvider 的 boot 方法中:
use Illuminate\Support\Facades\Validator;
public function boot()
{
Validator::extend('uppercase', function ($attribute, $value, $parameters, $validator) {
return strtoupper($value) === $value;
});
Validator::replacer('uppercase', function ($message, $attribute, $rule, $parameters) {
return str_replace(':attribute', $attribute, $message);
});
}
然后在规则中使用:
'name' => 'required|uppercase'
基本上就这些。Laravel 的验证系统灵活又强大,合理使用可以大幅提升开发效率和代码可维护性。自定义规则让复杂业务逻辑也能被清晰封装。
# php
# word
# laravel
# cad
# app
# ai
# red
# 封装
# 表单验证
# 闭包
# 自定义
# 表单
# 复用
# 器中
# 能为
# 还可以
# 你可以
# 多个
# 你也
# 也能
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何记录自定义日志?(Log频道配置)
如何在阿里云香港服务器快速搭建网站?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
奇安信“盘古石”团队突破 iOS 26.1 提权
如何快速搭建个人网站并优化SEO?
Laravel如何实现用户密码重置功能?(完整流程代码)
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
Laravel如何使用Collections进行数据处理?(实用方法示例)
详解CentOS6.5 安装 MySQL5.1.71的方法
iOS发送验证码倒计时应用
昵图网官方站入口 昵图网素材图库官网入口
python中快速进行多个字符替换的方法小结
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel观察者模式如何使用_Laravel Model Observer配置
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
音响网站制作视频教程,隆霸音响官方网站?
如何解决hover在ie6中的兼容性问题
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
PHP正则匹配日期和时间(时间戳转换)的实例代码
MySQL查询结果复制到新表的方法(更新、插入)
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
如何在IIS7上新建站点并设置安全权限?
如何为不同团队 ID 动态生成多个独立按钮
Python图片处理进阶教程_Pillow滤镜与图像增强
iOS正则表达式验证手机号、邮箱、身份证号等
网站制作企业,网站的banner和导航栏是指什么?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel如何自定义错误页面(404, 500)?(代码示例)
高防服务器租用如何选择配置与防御等级?
Laravel如何使用Service Container和依赖注入?(代码示例)
EditPlus中的正则表达式 实战(1)
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Laravel如何为API生成Swagger或OpenAPI文档
韩国服务器如何优化跨境访问实现高效连接?
Swift中switch语句区间和元组模式匹配
Android Socket接口实现即时通讯实例代码
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权

