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 】
相关推荐:
如何在IIS服务器上快速部署高效网站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Laravel如何自定义错误页面(404, 500)?(代码示例)
高防服务器租用指南:配置选择与快速部署攻略
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel Docker环境搭建教程_Laravel Sail使用指南
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
新三国志曹操传主线渭水交兵攻略
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
网站图片在线制作软件,怎么在图片上做链接?
中国移动官方网站首页入口 中国移动官网网页登录
Laravel怎么实现模型属性的自动加密
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
动图在线制作网站有哪些,滑动动图图集怎么做?
,网页ppt怎么弄成自己的ppt?
javascript中对象的定义、使用以及对象和原型链操作小结
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
EditPlus中的正则表达式 实战(2)
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
bing浏览器学术搜索入口_bing学术文献检索地址
BootStrap整体框架之基础布局组件
Laravel如何创建自定义Artisan命令?(代码示例)
微信小程序 scroll-view组件实现列表页实例代码
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何在Windows环境下新建FTP站点并设置权限?
JavaScript如何实现音频处理_Web Audio API如何工作?
微信小程序 HTTPS报错整理常见问题及解决方案
桂林网站制作公司有哪些,桂林马拉松怎么报名?
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel如何实现多对多模型关联?(Eloquent教程)
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
如何快速搭建二级域名独立网站?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
如何在云主机快速搭建网站站点?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
浅谈redis在项目中的应用
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
网站建设要注意的标准 促进网站用户好感度!
如何在建站主机中优化服务器配置?
iOS中将个别页面强制横屏其他页面竖屏
英语简历制作免费网站推荐,如何将简历翻译成英文?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南

