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,一经查实,立即删除!

相关文章

聊聊mysql jdbc的prepareStatement

序 本文主要研究一下mysql jdbc的prepareStatement prepareStatement java/sql/Connection.java /*** Creates a <code>PreparedStatement</code> object for sending* parameterized SQL statements to the database.* <P>* A SQL statement with or wit…

SpringBoot之RestTemplate使用Apache的HttpClient连接池

SpringBoot自带的RestTemplate是没有使用连接池的&#xff0c;只是SimpleClientHttpRequestFactory实现了ClientHttpRequestFactory、AsyncClientHttpRequestFactory 2个工厂接口&#xff0c;因此每次调用接口都会创建连接和销毁连接&#xff0c;如果是高并发场景下会大大降低性…

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

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

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

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

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

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

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

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

JVM的故事—— 内存分配策略

内存分配策略 文章目录 内存分配策略一、对象优先在Eden分配二、大对象直接进入老年代三、长期存活的对象将进入老年代四、动态对象年龄判定五、空间分配担保 一、对象优先在Eden分配 堆内存有新生代和老年代&#xff0c;新生代中有一个Eden区和一个Survivor区(from space或者…

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

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

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

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

【能用Python就可以轻松解决这5个常见运维!】

许多运维工程师会使用 Python 脚本来自动化运维任务。Python 是一种流行的编程语言&#xff0c;具有丰富的第三方库和强大的自动化能力&#xff0c;适用于许多不同的领域。 在运维领域&#xff0c;Python 脚本可以用来实现各种自动化任务&#xff0c;例如&#xff1a; 连接远…

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

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

网络渗透day12-高级问题2

当然&#xff0c;继续提供更多高级网络渗透测试问题和回答&#xff1a; 在渗透测试中&#xff0c;您如何评估目标系统的人工智能&#xff08;AI&#xff09;模型的隐私保护机制&#xff0c;以查找可能的隐私泄露和数据滥用风险&#xff1f; - 回答&#xff1a;我会分析AI模型的…

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&#xff0c;UI Toolkit容器 中介绍了 VisualElement、ScrollView、ListView、GroupBox 等容器&#xff0c;UI Toolkit样式选择器 中介绍了简单选择器、复杂选择器、伪类选择器等样式选择器&#xff0c;…

宝塔面板linux在终端使用命令开启服务保持服务不关闭

我们经常在宝塔面板终端开启服务&#xff08;比如socket等服务时&#xff09;&#xff0c;如果关闭面板标签页或者关闭终端&#xff0c;服务也随之关闭了&#xff0c;要保持服务一直运行&#xff0c;就需要把终端进程放在linux后台执行&#xff0c;方法如下&#xff1a; 1、先…

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 实例&#xff0c;包装成一个新的 Promise 实例。 const p Promise.all([p1, p2, p3]);上面代码中&#xff0c;Promise.all()方法接受一个数组作为参数&#xff0c;p1、p2、p3都是 Promise 实例&#xff0c;如果不是&#xff0c;就会先调…

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

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

Java设计模式之适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式&#xff0c;它结合了两个独立接口的功能。 这种模式涉及到一个单一的类&#xff0c;该类负责加入独立的或不兼容的接口功能。举个真实的例子&#xff0…