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

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();/获取验证通过的(有效的)数据// 文章内容是符合规则的,存入数据库
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue/React 项目部署到服务器后,刷新页面出现404报错

问题描述:在本地启动项目一切正常,部署到服务器上线后出现BUG,项目刷新页面出现404。 起初以为是自己路由守卫或是token丢失问题,找了一圈终于解决了 产生原因:我们打开vue/react打包后生成的dist文件夹,可…

论文开题:成功之门的五大关键策略

研究生、博士生、学者或任何从事研究的人都会面临一个不可避免的环节——论文开题。这一阶段不仅定义了接下来研究的方向,还可能影响到整个项目的成功与否。那么,如何确保你的开题过程能够无瑕通过,还能打动评审人呢?本文将揭示论…

MEMS传感器的原理与构造——单片式硅陀螺仪

一、前言 机械转子式陀螺仪在很长的一段时间内都是唯一的选项,也正是因为它的结构和原理,使其不再适用于现代小型、单体、集成式传感器的设计。常规的机械转子式陀螺仪包括平衡环、支撑轴承、电机和转子等部件,这些部件需要精密加工和…

文件包含漏洞利用的几种方法

文章目录 安装环境启动环境漏洞花式利用蚁剑连接图片马读取敏感文件(hosts)读取该网站的php源码 代码审计 安装环境 安装phpstudy,下载MetInfo 5.0.4版本软件,复制到phpstudy目录下的www目录中。 打开phpstudy,访问浏…

恒运资本:北交所股票全红!不到10分钟30%涨停,“认房不认贷”发力了!

今天早盘,A股震荡上扬,上证指数、深证成指等重要股指高开高走,并均涨超1%,两市成交略有增加。 盘面上,房地产、家居用品、煤炭、钢铁等板块涨幅居前,光刻机、软件服务、半导体、机器视觉等板块跌幅居前。北…

【Linux系列】vmware虚拟机网络配置详解

非原创 原文地址[1] 首发博客地址[2] 系列文章地址[3] vmware 为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。 打开…

Cyber RT学习笔记---7、Component组件认知与实践

7、Component组件认知与实践 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分,还请大家多多指出。 课程地址: https://apollo.baidu.com/community/course/outline/329?activeId10200 更多还请参考: [1] Apollo星火计划学习笔记——第…

Web自动化 —— Selenium元素定位与防踩坑

1. 基本元素定位一 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By # selenium Service("../../chromedriver.exe") # driver webdriver.Chrome(serviceService) # driver.…

【Unity3D】UI Toolkit元素

1 前言 UI Toolkit简介 中介绍了 UI Builder、样式属性、UQuery、Debugger,UI Toolkit容器 中介绍了 VisualElement、ScrollView、ListView、GroupBox 等容器,UI Toolkit样式选择器 中介绍了简单选择器、复杂选择器、伪类选择器等样式选择器,…

Linux入门之进程信号|信号产生的方式

文章目录 一、信号入门 1.linux信号的基本概念 2.使用kill -l 命令可以查看系统定义的信号列表 3.信号处理常见方式 二、产生信号 1.通过终端按键产生信号 2.通过调用系统函数向进程发信号 3.由软条件产生信号 4.硬件异常产生信号 1. /0异常 2.模拟野指针 一、信号入门…

华为数通方向HCIP-DataCom H12-821题库(单选题:221-240)

第201题 BGP 协议用​​ beer default-route-advertise​​ 命令来给邻居发布缺省路由,那么以下关于本地 BGP 路由表变化的描述,正确的是哪一项? A、在本地 BGP 路由表中生成一条活跃的缺省路由并下发给路由表 B、在本地 BGP 路由表中生成一条不活跃的缺省路由,但不下发给…

【ES6】Promise.all用法

Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 const p Promise.all([p1, p2, p3]);上面代码中,Promise.all()方法接受一个数组作为参数,p1、p2、p3都是 Promise 实例,如果不是,就会先调…

Vue2+Vue3笔记(尚硅谷张天禹老师)day02

声明:只是记录,初心是为了让页面更好看,会有错误,我并不是一个会记录的人,所以有点杂乱无章的感觉,我先花点时间把视频迅速过掉,再来整理这些杂乱无章的内容 组件化编程 按照视频来的话,这里应该有一些概念的东西&…

数据结构零基础入门篇(C语言实现)

前言:数据结构属于C学习中较难的一部分,对应学习者的要求较高,如基础不扎实,建议着重学习C语言中的指针和结构体,万丈高楼平地起。 一,链表 1)单链表的大致结构实现 用C语言实现链表一般是使…

入选VLDB 2023! OceanBase 4.0单机分布式一体化研究成果获国际顶会认可

近日,国际顶级数据库学术会议 VLDB 2023 在加拿大温哥华开幕。OceanBase 研究成果论文 “OceanBase Paetica: A Hybrid Shared-nothing/Shared-everything Database for Supporting Single Machine and Distributed Cluster” 被 VLDB 2023 收录!相继 20…

ACL 访问控制 过滤数据 维护网络安全(第七课)

一 ACL 简介 ACL是Access Control List(访问控制列表)的缩写,是一种用于控制文件、目录、网络设备等资源访问权限的方法。ACL可以对每个用户或用户组设置不同的访问权,即在访问控制清单中为每个用户或用户组指定允许或禁止访问该资源的权限。它通常由一系列规则组成,规则…

vue3 判断包含某个字符

<img v-if"node.level 1 && checkIfIncludeSubStr(node.label, 人口)"src"/assets/images/icon-convention-01.png" width"16"class"inlineBlock Vmiddle" style"margin-right: 8px;"/>const data reactive…

kubernetes常见面试问题详解

在面试的时候&#xff0c;面试官常常会问一些问题&#xff1a; k8s是什么&#xff1f;有什么用?k8s由哪些组件组成&#xff1f;pod的启动流程&#xff1f;k8s里有哪些控制器&#xff1f;k8s的调度器里有哪些调度算法&#xff1f;pod和pod之间的通信过程&#xff1f;外面用户访…

微服务-gateway鉴权

文章目录 一、前言二、gateway鉴权1、依赖配置2、编写代码3、GlobalFilter详解3.1、GlobalFilter简介3.2、GlobalFilter自定义执行顺序3.2.1、实现Order接口实现自定义执行顺序 一、前言 网关是介于客户端和服务器端之间的中间层&#xff0c;所有的外部请求都会先经过 网关这一…

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

0.引言 上一篇博客介绍了使用Yalmip工具箱求解单阶段鲁棒优化的方法。这篇文章将和大家一起继续研究如何使用Yalmip工具箱求解两阶段鲁棒优化(默认看到这篇博客时已经有一定的基础了&#xff0c;如果没有可以看看我专栏里的其他文章)。关于两阶段鲁棒优化与列与约束生成算法的原…