Laravel 表单验证器的常用的2种使用方法

2023-11-17

1、使用控制器的 validate 方法进行参数验证

场景一:前后端未分离

/**
 * 保存一篇新的博客文章。
 *
 * @param Request $request
 * @return Response
 */
public function store(Request $request)
{
  $this->validate($request, [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
  ]);

  // 文章内容是符合规则的,存入数据库
}

若验证失败参考:Validation - Laravel 中文网 为 Web 工匠创造的 PHP 框架 

场景二:前后端分离


public function store(Request $request)
{
    try{
        $validatorData = $request->validate([
            'admin_username' => ['required', 'unique:admin_users', 'max:20'],
            'admin_pwd' => ['required', 'max:70'],
            'admin_tel' => ['required', 'unique:admin_users', 'size:11'],
            'auth_id' => ['required'],
        ]);
    } catch (\Exception $exception){
        dump("exception");
        dump($exception->getMessage());//显示一条错误消息(and x more error)
        dd($exception->errors());//一个包含所有错误消息的数组
    }
    dd($validatorData);//验证通过后的数据

    // 文章内容是符合规则的,存入数据库
}

验证失败:

使用try{}catch(){}捕获错误消息

验证通过:

 2、手动创建验证器实例进行验证

2.1 使用默认的验证信息

use Illuminate\Support\Facades\Validator;

public function store(Request $request)
{
    $rules = [
        'admin_username' => ['required', 'unique:admin_users', 'max:20'],
        'admin_pwd' => ['required', 'max:70'],
        'admin_tel' => ['required', 'unique:admin_users', 'size:11'],
        'auth_id' => ['required'],
    ];
    $validator = Validator::make($request->all(), $rules);
    if ($validator->fails()) {
        dump($validator->attributes());//需要验证属性
        dump($validator->valid());//验证通过的(有效的)
        dump($validator->messages());//所有的错误消息
        dump($validator->getMessageBag());//所有的错误消息(同上)
        dd($validator->errors());//所有的错误消息(同上)
    }
    dd($validator);

    // 文章内容是符合规则的,存入数据库
}
2.2 使用自定义的验证信息

举个栗子

/**
 * 添加一个新的用户。
 *
 * @param Request $request
 * @return Response
 */
public function add(Request $request)
{

    $rules = [
        'admin_username' => ['required', 'unique:admin_users', 'max:20'],
        'admin_pwd'      => ['required', 'max:70', Password::min(6)->numbers()->letters()],
        'admin_tel'      => ['required', 'unique:admin_users', 'size:11'],
        'auth_id'        => ['required'],
        'admin_realname' => ['required'],
    ];
    $messages = [
        'admin_username.required'=>':attribute 必填',
        'admin_username.unique'=>':attribute 已存在',
        'admin_username.max:20'=>':attribute 最多20个字符',
        'admin_pwd.required'=>':attribute 必填',
        'admin_pwd.max'=>':attribute 最多70个字符',
        'admin_pwd'=>':attribute 最少6位数,且必须包含字母和数字',
        'admin_tel.required'=>':attribute 必填',
        'admin_tel.unique'=>':attribute 已存在',
        'admin_tel.size'=>':attribute 必须11位数',
        'auth_id.required'=>':attribute 必选',
        'admin_realname.required'=>':attribute 必填',
    ];
    $attributes = [
        'admin_username'=>"用户名",
        'admin_pwd'=>"密码",
        'admin_tel'=>"手机号",
        'auth_id'=>"角色",
        'admin_realname'=>"真实姓名",
    ];
    $validator = Validator::make($request->all(), $rules, $messages, $attributes);
    if ($validator->fails()) {
        return $this->outputError(info: $validator->errors());
    }
    $data = $validator->getData();//获取验证的数据
    $data = $validator->valid();/获取验证通过的(有效的)数据

  // 文章内容是符合规则的,存入数据库
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 表单验证器的常用的2种使用方法 的相关文章

  • php:验证 POST 的最佳方法

    我一直在使用下面的代码来验证 POST 的用户输入 if isset POST name empty POST name n POST name else errors Please give a name 这段代码检查是否确实设置了 na
  • PHP - 将数据从一个站点安全地传递到另一个站点

    我有一个可以接受来自多个站点的请求的站点 有点像升级检查 这些网站将发送用户名 密码 应用程序版本等信息 然后我的网站将根据这些信息发送响应 基本上这是一个 GET请求 例如 http www mysite com user boo pas
  • PHP 添加 1 个月至今

    我有一个返回 1 个月前的 url 的函数 我想显示当前选定的月份 但我不能使用简单的当前月份 因为当用户单击 1 个月前的链接时 选定的月份将发生变化并且不是当前月份 因此 函数返回 August 2012 如何制作可以增加 1 个月时间
  • PHP SimpleXML,如何设置属性?

    如果你有类似的东西
  • 如何让 CodeIgniter 接受“查询字符串”URL?

    根据 CI 的文档 CodeIgniter 使用基于分段的方法 例如 example com my group 如果我想找到一个特定的组 id 5 我可以访问 example com my group 5 并在控制器中定义 function
  • php脚本阻止直接访问

    我正在使用 ajax 从 php 脚本 例如 cost php 获取值 并且我知道直接访问它并获取该值会很容易 我什至在同一个脚本 cost php 上运行 cron 作业 所以如果我使用以下命令 cron 作业将无法工作 if empty
  • 在应用程序上按下类似按钮时自动刷新时间线页面?

    在时间轴发布到页面上之前 当用户在页面上按下 点赞 按钮时 页面会自行刷新 现在 启用时间线后 如果您访问应用程序并按右上角的类似按钮 页面不会自行刷新 并且应用程序不会识别用户 喜欢 该页面 当用户按下 喜欢 按钮时 是否有一种方法或事件
  • 如何在 PHP 中通过 array_map(...) 使用数组的数组? [复制]

    这个问题在这里已经有答案了 PHP 函数array map http php net manual en function array map php期望回调作为第一个参数 或null for 创建数组的数组 http php net ma
  • PHP中的“@/path/to/a/file”是什么意思?

    我偶然发现以下代码示例 image file path code tmhOAuth gt request POST https upload twitter com 1 statuses update with media json arr
  • 在php word中将两个徽标对齐在同一行

    我使用 php word 添加了两个徽标 但两个徽标不在同一行 我希望两个徽标位于同一行 如下所示 我的错误在哪里 if file exists logo table gt addRow table gt addCell 20000 arr
  • 提交表单时显示警告框

    所以我有这两页 pageOne php and pageTwo php 表格在pageOne php
  • Laravel 中 Twitter Bootstrap 导航的自动活动类

    和大多数人一样 我正在使用 Twitter Bootstrap 来构建我目前在 Laravel 中开发的网站 到目前为止 我很喜欢使用 Laravel 作为与 Rails 相当的 PHP 但我想知道是否有更好的方法来制作导航栏 我试图确保我
  • 获取特定 $_POST 数组的值

    name qty foreach POST as items gt value check qty gt 1 echo key gt value br 如何仅显示其值为 qty1 gt value qty2 gt value gt 0 的项
  • PHP - 获取 URL 中写入的 $_GET 参数字符串的最简单方法

    我正在尝试从一个页面重定向到另一页面 同时保留参数 例如如果我有一个页面 page php param1 1 param2 2 提取 param1 1 param2 2 的最简单方法是什么 Use SERVER QUERY STRING 访
  • 由商店经理根据指定的分类术语过滤 WooCommerce 订单

    我想将带有特定产品标签的订单分配给后端的特定商店经理 并隐藏其余订单 我目前正在使用WooCommerce 订单拆分器 https wordpress org plugins woo order splitter免费插件可按项目 产品 将订
  • Laravel Vue SPA 与 MPA/SSR

    许多 laravel vue 教程使用 ajax 调用来获取数据 看来 SPA 与 Laravel 是完全隔离的 IE Laravel 只是一个数据 API vue 应用程序也可以简单地托管在第三方外部服务器 例如 AWS S3 上 这是推
  • PHP runkit_function_rename 不起作用?

    这段代码不起作用 为什么不 我真正想要的是这个 我正在使用一个具有功能的系统 当我在本地主机上时 我希望该函数做一些不同的事情 我想用自己的东西覆盖该函数 也欢迎所有替代方案 您是否安装了 PECL 扩展 http www php net
  • Jpgraph:如何在php中设置组条形柱形图的标签

    这是我的 jpgraph 演示代码
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • 根据产品类别自定义购物车总计和结帐总计文本

    我想根据产品类别 或其他一些逻辑 自定义购物车和结帐订单汇总表中的文本 例如 对于 总计 文本 参见图片 如果购物车包含名为 杂货 的类别中的产品 那么我希望订单摘要中的文本显示为 总计估计 文本 参见图片以下 如果购物车不包含任何杂货 那

随机推荐

  • Ubuntu18.04安装pcl(过程/坑记录式教程)

    Ubuntu18 04安装pcl 1 下载pcl 2 安装依赖项 3 编译 4 安装 5 网上教程说要安装QT5和VTK 但按照本文的 本文记录了安装时出现的问题 出错的安装命令也记录了 建议浏览一遍再参考 不要错用了错误的指令 1 下载p
  • background属性介绍

    background属性在CSS中有较多的应用 主要用来设置背景颜色 图片 background属性可以分开写 也可以合并 建议合并减少代码量 1 background color 设置背景颜色 设置的背景颜色会填充元素的内容 内边距和边框
  • 【SpringBoot笔记39】SpringBoot + SockJS + Stomp实现WebSocket通信(建立连接、发送消息、订阅消息、断开连接)

    这篇文章 主要介绍SpringBoot SockJS Stomp实现WebSocket通信 建立连接 发送消息 订阅消息 断开连接 目录 一 WebSocket通信 1 1 前端环境 1 2 后端环境 1 3 添加WebSocket配置
  • 传统程序优化与终身程序优化

    传统程序优化示例一 cpu示例 3个方面浅谈程序优化 每一个程序员都有一个大梦想当初在学校实验室的时候 常常写一个算法 让程序跑着四处去晃荡一下回来 结果也就出来了 可工作后 算法效率似乎重要多了 毕竟得真枪实弹放到产品中 卖给客户的 很多
  • uni-app,文本实现展开、收起全文

    效果 思路 1 根据文本显示的布局中 每行大致能显示的文字个数 实例是大致每行26个文字 2 首先加载页面时 根据文字总长度判断是否超出自定义行数 来处理相应的数据 多余自定义行数 截取对应的文字个数做显示 代码与讲解 1 设置参数 scr
  • 【Docker】Docker快速入门,常用网址与常用命令

    目录 一 docker常用网址 建议收藏 docker官方公开库 Docker Hub docker官方网站 Home Docker docker菜鸟联盟教程 Docker 教程 菜鸟教程 二 docker常用命令 一 镜像使用 1 镜像操
  • Mastering Debugging in Visual Studio 2010 - A Beginner's Guide

    Mastering Debugging in Visual Studio 2010 A Beginner s Guide http www codeproject com Articles 79508 Mastering Debugging
  • 非常好用的自动化运维工具------ansible

    目录 一 ansible 简介 1 ansible 是什么 2 ansible 特点 3 ansible 架构图 二 ansible的配置部署 1 使用 yum 安装epel源和ansible 2 修改ansible的仓库文件 3 配置公私
  • 一图看懂 Unity函数执行顺序/Unit脚本生命周期

    温故而知新 有些函数过久了忘了调用顺序 发个文记一下 下边有对各个函数的解释 第一个场景加载 这些函数在场景开始时被调用 场景中的每个对象一次 Awake 这个函数总是在任何 Start 函数之前调用 也只是在一个预制件被实例化 如果游戏对
  • 二叉树交换左右子树的三种实现方式

    二叉树交换左右子树的三种实现方式 顺序存储结构 链式存储结构 顺序存储结构 交换左右子树实际上就是同层之间交换位置 在顺序存储结构下 先确定树的深度 再划分层 每个层内做交换即可 链式存储结构 递归实现很简单 非递归可以借助栈或队列辅助实现
  • 区块链数据库

    大家好 这里是链客区块链技术问答社区 链客 有问必答 区块链是互联网未来十年中举足轻重的技术 区块链 Blockchain 或者说分布式账本 DLT Distributed Ledger Technology 最早是起源于比特币的一个重要概
  • ruoyi框架时间范围range增加今日,近7日,近30日时间选择

    原先layui时间控件是不支持今日 近7日 近30日选择的 网上的解决方法是直接在引用的js中修改代码 这是一种方法 但是对于不能修改源代码的童鞋来说是不行的 所以一下解决方法诞生了 直接添加这三个按钮并和时间控件 laydate 有友好的
  • 【数字图像处理】图像形态学算法C语言实现(图像卷积,膨胀,腐蚀,开运算,闭运算,顶帽,黑帽,雕版,锐化)

    文章目录 一 图像卷积 1 图像卷积 2 数字信号处理中的卷积 3 数字图像处理中的卷积 二 图像卷积实现各种形态学运算 腐蚀 膨胀 形态学梯度 开运算 闭运算 顶帽 黑帽 雕版 锐化 li conv c main c 三 效果展示 原图
  • SPI转can芯片CSM300详解以及Linux驱动移植调试笔记

    更多嵌入式Linux干货 请关注 一口Linux 一 CSM300概述 CSM300 A 系列是一款可以支持 SPI UART 接口的CAN模块 1 简介 CSM300 A 系列隔离 SPI UART 转 CAN 模块是集成微处理器 CAN
  • Linux常用命令合集(二)

    file命令 该命令用于判断接在file命令后的文件的基本数据 因为在Linux下文件的类型并不是以后缀为分的 所以这个命令对我们来说就很有用了 gt file rumenz txt 查看rumenz txt的文件类型 rumenz txt
  • “泰迪杯”挑战赛 - 通过聚类方法对航空客运的客户进行细分

    目 录 挖掘目标 分析方法与过程 2 1 总体流程 2 2 具体步骤 步骤一 数据预处理 步骤二 群体聚类 步骤三 行为特征聚类 2 3 结果分析 第一类 第二类 第三类 结论 参考文献 1 挖掘目标 本次建模目标是在航空公司的海量会员数据
  • 分享几个好用的WP插件,让你的网站牛逼起来

    1 WP Rocket WPRocket缓存插件是目前最高效灵活的WordPress静态缓存插件 它可以优化你的JSCSS文件结构 减少多次请求 达到优化速度的目的 它还集成了图像延迟加载 对于想要最极致加速的用户来说是一个不错的选择 通过
  • Type Script 之 类型

    Type Script 中的类型有很多 常见的类型有 undefined null boolean number bigint string symbol void object unknown never any 其中基本类型有 void
  • java内存模型 堆栈_Java内存模型分析

    一 Java内存的构成 先上一个官方java document里的图 由上图可知 整块区域分为Young Generation Tenured Generation Permanent Generation 详细解释一下Young区 You
  • Laravel 表单验证器的常用的2种使用方法

    1 使用控制器的 validate 方法进行参数验证 场景一 前后端未分离 保存一篇新的博客文章 param Request request return Response public function store Request req