新闻中心

Lar*el 中使用通用类选择性验证多个字段并返回所有错误

2025-11-18
浏览次数:
返回列表

laravel 中使用通用类选择性验证多个字段并返回所有错误

本文介绍了在 Lar*el 项目中如何利用通用类实现多个字段的选择性验证,并返回所有验证错误。通过 Form Request Validation,将验证规则集中管理,简化控制器逻辑,并利用 Lar*el 内置的密码验证规则,提高代码的可读性和可维护性。

在 Lar*el 项目开发中,经常会遇到需要在多个控制器中复用同一套验证规则的情况。直接在控制器中编写验证逻辑会导致代码冗余,不易维护。本教程将介绍如何利用 Lar*el 的 Form Request Validation 特性,将验证逻辑集中管理,并返回所有验证错误。

Form Request Validation 的优势

Form Request Validation 是 Lar*el 提供的强大的验证机制,它具有以下优势:

  • 代码复用性高:可以将验证规则定义在一个 Form Request 类中,并在多个控制器中复用。
  • 逻辑清晰:将验证逻辑从控制器中分离出来,使控制器代码更加简洁易懂。
  • 错误处理方便:Lar*el 会自动处理验证失败的情况,并将错误信息返回给前端。
  • 可定制性强:可以自定义验证规则和错误信息,满足各种复杂的验证需求。

实现步骤

  1. 创建 Form Request 类

使用 Artisan 命令创建一个 Form Request 类:

php artisan make:request MyFormRequest

该命令会在 app/Http/Requests 目录下生成 MyFormRequest.php 文件。

  1. 定义验证规则

在 MyFormRequest.php 文件中,重写 rules() 方法,定义验证规则。

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rules\Password;

class MyFormRequest extends FormRequest
{
    /**
     * Get the validation rules that apply to the request.
     */
    public function rules(): array
    {
        return [
            'email' => ['required', 'email', 'unique:users'],
            'password' => [
                'required',
                Password::min(8)->mixedCase()->numbers()->symbols()
            ],
            'usrid' => ['required', 'unique:users'],
        ];
    }
}

在上面的代码中,我们定义了三个字段的验证规则:

Whimsical Whimsical

Whimsical推出的AI思维导图工具

Whimsical 182 查看详情 Whimsical
  • email:必填,必须是有效的电子邮件地址,并且在 users 表中必须是唯一的。
  • password:必填,密码长度至少为 8 个字符,并且必须包含大小写字母、数字和符号。这里使用了 Lar*el 内置的 Password 验证规则,可以方便地定义复杂的密码验证规则。
  • usrid:必填,并且在 users 表中必须是唯一的。
  1. 在控制器中使用 Form Request 类

在控制器方法中,使用 MyFormRequest 类代替 Request 类。

public function store(MyFormRequest $request)
{
    // $request has been validated, no further checking needed
    // 可以通过 $request->input('email') 等方式获取验证后的数据
}

当请求到达控制器时,Lar*el 会自动执行 Form Request 类中定义的验证规则。如果验证失败,Lar*el 会自动将错误信息返回给前端。如果验证成功,则可以像使用普通的 Request 对象一样使用 $request 对象。

注意事项

  • 确保在 MyFormRequest 类中重写了 authorize() 方法,并返回 true,以允许所有用户访问该请求。如果需要进行权限验证,可以在该方法中编写相应的逻辑。

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }
  • 可以在 MyFormRequest 类中自定义错误信息。重写 messages() 方法,返回一个包含字段名和错误信息的数组。

    /**
     * Get the error messages for the defined validation rules.
     *
     * @return array
     */
    public function messages()
    {
        return [
            'email.required' => '邮箱不能为空',
            'email.email' => '邮箱格式不正确',
            'email.unique' => '该邮箱已被注册',
            'password.required' => '密码不能为空',
            'password.min' => '密码长度不能少于 8 位',
            'usrid.required' => '用户 ID 不能为空',
            'usrid.unique' => '该用户 ID 已被注册',
        ];
    }

总结

使用 Form Request Validation 可以有效地管理 Lar*el 项目中的验证逻辑,提高代码的可复用性和可维护性。通过定义验证规则和错误信息,可以轻松地实现各种复杂的验证需求。同时,Lar*el 内置的密码验证规则可以帮助开发者快速构建安全的密码验证机制。通过本教程的学习,相信您已经掌握了在 Lar*el 项目中使用 Form Request Validation 的方法,并可以在实际项目中灵活运用。

以上就是Lar*el 中使用通用类选择性验证多个字段并返回所有错误的详细内容,更多请关注php中文网其它相关文章!


# 类中  # 答题网站建设工程  # 大型网站建设平台深圳  # SEO优化一个月多少钱  # 电动车营销账号怎么做推广  # 如家酒店的营销渠道推广  # 唐山天猫网站推广业务  # sem seo发展历史  # 创意网站建设ppt游戏  # 沧州铝单板关键词排名  # 松原seo查询怎么提高  # 遍历  # 已被  # 为空  # 必填  # php  # 多维  # 器中  # 复用  # 错误信息  # 多个  # red  # 权限验证  # 代码复用  # 邮箱  # ai  # app  # 前端  # laravel  # word 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示  Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  steam官方网页快速访问 steam账号注册全流程  PySpark中从现有列右侧提取可变长度字符创建新列的教程  PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  反效果?《战地6》免费试玩开启后玩家数不升反降  理解Python模块与全局变量的作用域管理  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  蛙漫官方正版入口 蛙漫网页在线全集免费观看  抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  照顾宝贝2小游戏点击立即在线玩  AO3中文官网链接_AO3网页版稳定镜像站  Go语言中JSON数据解码与字段访问指南  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  mc.js游戏直达 mc.js网页免下载版本秒进地址  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】  J*aScript设计模式实践_j*ascript代码优化  移动端XML文件怎么转换成Excel 手机和平板上的解决方案  微博网页版直接访问 微博网页版账号管理快速入口  理解J*aScript Promise的微任务队列与执行顺序  mc.js官网登录入口 mc.js官方登录入口最新版  优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法  构建轻量级网站内部消息系统:Formspree 集成指南  妖精动漫免费平台 妖精动漫官网资源观看网址  Mac怎么查看崩溃日志_Mac控制台错误报告分析  2026春节假期时间安排 2026春节假日查询  AO3镜像入口大全 AO3网页版内容访问全集  J*aScript DOM操作:高效清空列表元素的策略与实践  126邮箱手机版登录官网2026_126手机邮箱免费入口最新  KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程  Win11怎么开启省电模式_Win11电池节电模式自动开启  MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  vivo云服务网页版登录 怎么登录vivo云服务网页版  Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】  c++ 命名空间怎么用 c++ namespace使用指南  Django表单提交验证失败后保持字段值不刷新  J*aScript异步迭代器_j*ascript异步遍历  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  Golang指针如何与map组合使用_Golang map指针组合实践  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  实现分段式页面滚动导航:CSS与J*aScript教程  在Socket.IO连接中实现Access Token自动更新与动态重连  响应式图片在网页设计中的正确实现方法  火锅吃太多会怎样 火锅吃太多会上火吗  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法 

搜索