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 】
相关推荐:
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
简历没回改:利用AI润色让你的文字更专业
如何快速搭建支持数据库操作的智能建站平台?
如何彻底卸载建站之星软件?
如何用y主机助手快速搭建网站?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
如何快速搭建自助建站会员专属系统?
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
网站制作软件有哪些,制图软件有哪些?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何在建站之星绑定自定义域名?
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
详解jQuery中基本的动画方法
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
怎样使用JSON进行数据交换_它有什么限制
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
在centOS 7安装mysql 5.7的详细教程
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
如何在搬瓦工VPS快速搭建网站?
Python面向对象测试方法_mock解析【教程】
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
高端建站如何打造兼具美学与转化的品牌官网?
,怎么在广州志愿者网站注册?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel如何生成API文档?(Swagger/OpenAPI教程)
如何在阿里云虚拟服务器快速搭建网站?
Laravel如何处理文件下载请求?(Response示例)
详解阿里云nginx服务器多站点的配置
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
Laravel如何实现多对多模型关联?(Eloquent教程)
创业网站制作流程,创业网站可靠吗?
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
Android 常见的图片加载框架详细介绍
详解jQuery停止动画——stop()方法的使用
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何撰写建站申请书?关键要点有哪些?
Laravel如何实现用户密码重置功能?(完整流程代码)
如何快速搭建FTP站点实现文件共享?

