【php开发工程师系统性教学】——laravel中自动验证的实现教程

news2024/11/24 20:34:38

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:PHP程序开发

🅰

请添加图片描述


文章目录

    • 🅰
    • 前言
    • 🎶一、 自动验证的前期的准备工作
      • 🐤路由:
      • 🐤控制器:
      • 🐤预期的效果图:
    • 🎶二、 实现验证功能
      • 1. 验证方法(控制器方法验证:推荐)
        • (1)基本语法:
        • (2)基本验证规则:
      • 2.自动验证Controller部分:
      • 2.输出错误信息
        • 结束语🥇


前言

  一般一个框架都会提供自动验证的机制,在TP 里面的验证的规则是写在模型里面进行验证的,但是自 laravel 里面的思想有些不一样,它的验证规则可以在控制器里面,也可以单独的写一个专门的验证文件。并且 laravel里面的验证不通过情况下的提示信息和表单数据是保存在 session 里面的,并且验证不通过的情况下会跳到上一个页面。
在前端页面中可以通过 JavaScript 验证表单的数据有效性,但是如果用户的浏览器过低或者直接禁用,则前端验证则可能会失效,这样就不能保证数据的有效性。所以后端也需做相应的验证操作,这个操作在 laravel 中称之为自动验证(在 ThinkPHP,中也有自动验证)。


🎶一、 自动验证的前期的准备工作


①可以使用有表单页面(视图),我们还要需要创造一个我们所需的路由和方法。

🐤路由:

在这里插入图片描述

🐤控制器:

在这里插入图片描述

🐤预期的效果图:

在这里插入图片描述


🎶二、 实现验证功能


1. 验证方法(控制器方法验证:推荐)

建议去查手册:https://laravelacademy.org/post/22380

(1)基本语法:

  使用控制器中的validate方法来完成, t h i s − > v a l i d a t e ( this->validate( this>validate(request,[验证规则]);
  如果验证失败,laravel会自动将用户重定向回上一个位置,并将验证错误信息一次性存放到session中。
请求验证:
在这里插入图片描述
扩展补充:如何得知一个请求类型?

语法:Input::method()

(2)基本验证规则:

required:不能为空。
max:255最长255个字符。
min:1最小1个字符。
email:验证邮箱是否合格。
confirmed:验证两个字段是否相同,如果验证的字段是 password,则必须输入一个与之匹配的password confirmation字段。
integer:验证字段必须是整型。
ip:验证字段必须是IP 地址。
numeric 验证字段必须是数值。
max:value 验证字段必须小于等于最大值,和字符串,数值,文件字段的 size 规则一起使用。
min:walue 验证字段的最小值,对字符串、数值、文件字段而言,和 size 规则使用方式一致。
size:value 验证字段必须有和给定值 value 想匹配的尺寸,对字符串而言,value 是相应的字符数目,对数值而言,value是给定整型值;对文件而言,value是相应的文件字节数。string 验证字段必须是字符串。
unique:表名,字段,需要排除的ID。

注意:多个验证规则可以通过"|"字符进行隔开

语法:$this->validate(数据对象,[数组形式的验证规则]);

2.自动验证Controller部分:

public function zdyz(Request $request){
            if($request->post())
            {
            $this->validate($request,[
                        
            'name' => 'required|min:1|max:3',
            'age' => 'required|integer|min:1|max:100',
            'email' =>'required|email'
        ]);
        
            }else{
        //展示一个视图
        return view("/home/zdyz");
            }
    
           
}

2.输出错误信息

  如果传入的请求字段不符合给定的验证规则,那怎么办呢?如前所述,Laravel 将自动将用户重定向回其以前的位置。此外,所有验证错误和请求输入都将自动闪存到会话中。

  通过 Illuminate\View\Middleware\ShareErrorsFromSession 中间件, e r r o r s 变量会在应用程序的所有视图之间共享,这个中间件是由 w e b 中间件组提供的。当应用该中间件时, errors 变量会在应用程序的所有视图之间共享,这个中间件是由 web 中间件组提供的。当应用该中间件时, errors变量会在应用程序的所有视图之间共享,这个中间件是由web中间件组提供的。当应用该中间件时,errors 变量将始终在视图中可用,从而使您方便地假定 e r r o r s 变量始终被定义并且可以安全使用。 errors 变量始终被定义并且可以安全使用。 errors变量始终被定义并且可以安全使用。errors 变量将是 Illuminate\Support\MessageBag 的一个实例。有关如何使用此对象的更多信息,请查看其文档。

  因此,在我们的示例中,当验证失败时,用户将被重定向到我们控制器的 create 方法,从而允许我们在视图中显示错误消息:

 @if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

在zdyz.blade.php中的代码如下:

<!DOCTYPE html>
<html lang="en">
<head>    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
	<link rel="stylesheet" href="css/weui.css"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    {{-- 系统的asset方法引入 --}}
    <link rel="stylesheet" type="test/css" href="{{asset('css')}}/app.css">
    <title>实战训练</title>
</head>
<body>
    @if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
	<form method="post" action="">
<p>姓名:<input type="text" name='name' value="" ></p>
<p>年龄:<input type="text" name='age' value="" ></p>
<p>邮箱:<input type="text" name='email' value="" ></p>
{{ csrf_field() }}
	<input type="submit" value="提交">
</form>
</body>
</html>

运行结果如下:
在这里插入图片描述
在这里插入图片描述

结束语🥇

以上就是PHP程序设计
持续更新PHP程序设计教程,欢迎大家订阅系列专栏🔥PHP程序开发你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

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

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

相关文章

下载好了annaconda,但是在创建一个新的Conda虚拟环境报错

文章目录 问题描述&#xff1a;解决方案1.生成一个配置文件 问题总结 问题描述&#xff1a; ProxyError(MaxRetryError(“HTTPSConnectionPool(host‘repo.anaconda.com’, port443): Max retries exceeded with url: /pkgs/pro/win-64/repodata.json.bz2 (Caused by ProxyErr…

高抗干扰/抗静电液晶屏驱动IC-VK2C24笔段液晶控制器

VK2C24是一个点阵式存储映射的LCD驱动器&#xff0c;可支持最大288点&#xff08;72SEGx4COM&#xff09;或者最大544点&#xff08;68SEGx8COM&#xff09;或者最大960点&#xff08;60SEGx16COM&#xff09;的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据&#xff…

记录一下MySQL8版本更改密码规则

#查看当前密码策略 show variables like validate_password%;#修改密码等级为low set global validate_password.policy LOW; #注意MySQL8版本这是点&#xff0c;不是_#修改密码长度为6 set global validate_password.length 6;#查询我的数据库中user表host和user select host,…

(笔记)KEIL经常碰到的错误(持续整理)

KEIL常碰到的错误 一、ERROR报错1、Build时报错 Error: L6218E2、Build时报错 error 653、Default Compiler Version 54、core_cm3.h(1213): error: unknown type name inline 二、调试与仿真1、keil5软件仿真没有实时波形2、调试模式时&#xff0c;程序前没有灰块3、Periphera…

如何学习VBA_3.2.20:DTP与Datepicker实现日期的输入

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的劳动效率&#xff0c;而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册&#xff0c;现在已经全部完成&#xff0c;希望大家利用、学习。 如果…

cesium 平滑显示billboard 透明度

描述&#xff1a;加载billboard的时候&#xff0c;要么是显示&#xff0c;要么是隐藏&#xff0c;不能平滑的显示&#xff0c;有个从不显示到显示的过程 解决方案&#xff1a;创建billboard的时候给一个color&#xff0c;颜色为(255,255,255)&#xff0c;透明度从0-1 let opaci…

Proteus 8 的使用记录

创建仿真文件 新建文件&#xff1a;默认下一步&#xff0c;至完成创建。 功能选择如图&#xff1a; 放置器件 常用元器件名称 keywords 常用51单片机 AT89C52 晶振 CRYSTAL 电阻 RES 排阻 RESPACK-8 瓷片电容 CAP 电解电容 CAP-ELEC 单刀单掷开关 S…

基于SSM+Jsp+Mysql的大学生校园兼职系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

TQZC706开发板教程:在ZC706上运行ADRV9371(vivado2018.3)

首先需要在github上下载两个文件&#xff0c;本例程用到的文件以及最终文件&#xff0c;我都会放在网盘里面&#xff0c;地址在本文的末尾&#xff0c;需要自行提取 在github上搜索hdl选择第一个-->选择版本-->我所使用的vivado是2018.3版本&#xff0c;所以这里我下载的…

什么场景适合使用Traefik?

Traefik 作为一款现代的反向代理和负载均衡器&#xff0c;已经成为云原生环境中的热门选择。它提供的动态配置能力和强大的自动化功能使其在多种场景中非常有用。本文将详细探讨适合使用 Traefik 的几种关键场景&#xff0c;并解释为何在这些情况下它特别有用 &#x1f30d;&am…

Spring Boot 统一功能处理(二)

本篇主要介绍Spring Boot统一功能处理中的统一数据返回格式。 目录 一、定义统一的返回类 二、配置统一数据格式 三、测试配置效果 四、统一格式返回的优点 五、源码角度解析String问题 一、定义统一的返回类 在我们的接口在处理请求时&#xff0c;返回的结果可以说是参…

UE C++ 学习

UBT&#xff08;虚幻编译工具&#xff08;UnrealBuildTool&#xff09;&#xff09;和UHT虚幻头工具&#xff08;UnrealHeaderTool&#xff09; UE有一组用于自动执行编译虚幻引擎过程的工具&#xff0c;包括 UBT和UHT&#xff08;以及其他工具&#xff09;。实现这一套工具的目…

Aritest+python+Jenkins解放双手iOS/Android自动化

ARITest、Python 和 Jenkins 可以结合在一起创建一个自动化测试解决方案&#xff0c;实现持续集成和持续测试的目标。以下是三者如何协同工作的基本概念&#xff1a; 1. **ARITest**&#xff1a; ARITest 是一款功能全面的自动化测试工具&#xff0c;提供 UI 自动化、接口自…

CSS3 立体 3D 变换

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 ✍CSS3 立体 3D 变换&#x1f48e;1 坐标轴&#x1f48e;2 perspective 透视视…

Vue(二):报错调试,vue3响应式原理、computed和watch,ref,props,接口

一、准备工作调试 跟着张天禹老师看前几集的时候可能会遇到如下问题&#xff1a; 1.下载插件&#xff1a;Vue Language Features (Volar)或者直接下载vue-offical 2.npm run serve时运行时出现错误&#xff1a;Error: vitejs/plugin-vue requires vue (&#xff1e;3.2.13) …

Flutter仿Boss-7.首页列表

效果 考察使用 Flutter Model的创建TabBar及TabBarView 的使用标签Wrap控件的使用列表ListView的使用 具体实现 今天懒的写文字了&#xff0c;想看具体实现的可以直接去我的github上&#xff1a; github&#xff1a;github.com/yixiaolunhui/flutter_project

PostgreSQL入门到实战-第二十四弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(八)官网地址PostgreSQL概述PostgreSQL中CROSS JOIN命令理论PostgreSQL中CROSS JOIN命令实战更新计划 PostgreSQL中表连接操作(八) 使用PostgreSQL CROSS JOIN从连接的表中生成行的笛卡尔乘积。 官网地址 声明: 由于操作系统, 版…

Xcode 15.0 新 #Preview 预览让 SwiftUI 界面调试更加悠然自得

概览 从 Xcode 15 开始&#xff0c;苹果推出了新的 #Preview 宏预览机制&#xff0c;它无论从语法还是灵活性上都远远超过之前的预览方式。#Preview 不但可以实时预览 SwiftUI 视图&#xff0c;而且对 UIKit 的界面预览也是信手拈来。 想学习新 #Preview 预览的一些超实用调试…

计算机服务器中了360后缀勒索病毒怎么办?360后缀勒索病毒解密步骤

网络技术的不断应用与发展&#xff0c;为企业的生产运营提供了极大便利&#xff0c;利用网络可以开展各项工作业务&#xff0c;可以大大提高企业的生产效率&#xff0c;然而&#xff0c;网络是一把双刃剑&#xff0c;在为企业提供便利的同时&#xff0c;也为企业的数据安全带来…

蓝桥杯【第15届省赛】Python B组

这题目难度对比历届是相当炸裂的简单了…… A&#xff1a;穿越时空之门 【问题描述】 随着 2024 年的钟声回荡&#xff0c;传说中的时空之门再次敞开。这扇门是一条神秘的通道&#xff0c;它连接着二进制和四进制两个不同的数码领域&#xff0c;等待着勇者们的探索。 在二进制…