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 】
【
网络技术251811 】
【
AI营销90571 】
相关推荐:
潮流网站制作头像软件下载,适合母子的网名有哪些?
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Laravel如何自定义分页视图?(Pagination示例)
如何在云服务器上快速搭建个人网站?
Linux系统命令中screen命令详解
高防服务器租用指南:配置选择与快速部署攻略
零基础网站服务器架设实战:轻量应用与域名解析配置指南
Python文件异常处理策略_健壮性说明【指导】
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
实例解析Array和String方法
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
无锡营销型网站制作公司,无锡网选车牌流程?
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何快速配置高效服务器建站软件?
javascript中的try catch异常捕获机制用法分析
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
Laravel如何使用模型观察者?(Observer代码示例)
Laravel Docker环境搭建教程_Laravel Sail使用指南
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Laravel如何实现本地化和多语言支持?(i18n教程)
网站制作报价单模板图片,小松挖机官方网站报价?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
JavaScript如何实现类型判断_typeof和instanceof有什么区别
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
免费网站制作appp,免费制作app哪个平台好?
如何彻底删除建站之星生成的Banner?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何快速查询网址的建站时间与历史轨迹?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何在新浪SAE免费搭建个人博客?
linux top下的 minerd 木马清除方法
个人摄影网站制作流程,摄影爱好者都去什么网站?
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何在建站之星网店版论坛获取技术支持?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何用已有域名快速搭建网站?

