例如,要使用手机号加验证码的方式提供登录网站的功能,那么在处理前端提交的 form 表单时,就不得不对提交的手机号及验证码做基本的数据校验。

手写规则,非常浪费时间。使用 laravel 内置的 validation 功能可以节省大量的代码及时间,而且可读性好一万倍。

新建一个 request

php artisan make:request LoginPost

使用独立的 form request validation 的原因是,可以方便的自定义错误信息。

此时会新增一个 request 文件 app/Http/Requests/LoginPost.php

在其中设置校验规则,及定制化的错误信息。(默认是英文错误信息)

public function rules()
{
return [
'tel' =>'required|regex:/^1[0-9]{10}$/',
'code' => 'required|digits:6',
];
} public function messages()
{
return [
'tel.required' => '请填写手机号',
'tel.regex' => '手机号格式错误',
'code.required' => '请填写验证码',
'code.digits' => '验证码格式错误',
];
}

注意,不要忘记将生成的 request 文件中的 authorize 函数中的 return false 改成 return true.

建立验证规则之后,需要将 controller 中对应的处理函数的 Request 替换成定制化的 Request.

例如

public function login(Request $request)

替换成

public function login(LoginPost $request)

如果提交的数据没有通过验证规则,则 laravel 会自动将请求重定向到之前的请求路径。

在 blade 模板中显示错误信息

@if ($errors->any())
<div class="jd_login_panle_input" style="padding: 0 26px; font-size: 13px; color: red;">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif

内置的校验规则

https://laravel.com/docs/5.5/validation#available-validation-rules

增加业务流程相关的校验错误信息

例如,验证码不匹配这样的错误,在 laravel 内置的校验规则中是无法实现的,这就需要自己去实现。

然后当校验失败时,append 定制化的错误信息。

// 验证码校验
$redis_code = Redis::get(env('APP_NAME').'sms'.$tel);
if ($redis_code != $code) {
$validator = Validator::make($request->all(), []);
$validator->errors()->add('code', '验证码错误');
return redirect('/login')->withErrors($validator)->withInput();
}

参考

https://laravel.com/docs/5.5/validation

Laravel Form 表单的数据校验的更多相关文章

  1. django做form表单的数据验证

    我们之前写的代码都没有对前端input框输入的数据做验证,我们今天来看下,如果做form表单的数据的验证 在views文件做验证 首先用文字描述一下流程 1.在views文件中导入forms模块 2. ...

  2. js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题

    js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...

  3. thinkPHP5.0使用form表单提交数据和删除文章,不用TP的提示页面,使用弹出提示信息

    form表单提交数据和删除文章时,TP的默认信息提示页面的看起来不是很好看,想要实现弹窗提示怎么做呢? 前端:可以使用前端的一个知识--iframe,iframe元素会创建包含另外一个文档的内联框架: ...

  4. form表单序列化数据之后,追加额外数据

    form表单序列化数据之后追加额外数据多使用在js中,下面是追加额外数据的代码: <span style="font-size:18px;">$.param({'inv ...

  5. springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据

    springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据 表单html: <form class="form-horizontal ...

  6. day75 form 组件(对form表单进行输入值校验的一种方式)

    我们的组件是什么呢 select distinct(id,title,price) from book ORM: model.py class Book(): title=model.CharFiel ...

  7. iview form表单数值类型校验「iview自定义form表单校验器」

    摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. ...

  8. Form表单提交数据的几种方式

    一.submit提交 在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type='submit'>)就可以进行数据的提交, ...

  9. C# 模拟提交 Form表单的数据

    用 HttpWebRequest Post方法模拟提交Form表单数据时,需要设置 ContentType 为 "application/x-www-form-urlencoded" ...

随机推荐

  1. 基于pycaffe的网络训练和结果分析(mnist数据集)

    该工作的主要目的是为了练习运用pycaffe来进行神经网络一站式训练,并从多个角度来分析对应的结果. 目标: python的运用训练 pycaffe的接口熟悉 卷积网络(CNN)和全连接网络(DNN) ...

  2. Excel:LOOKUP函数的经典用法

    1.逆向查询 下面这个表中,A:C列是员工基础信息表,分别是部门.姓名和职务. ​现在要根据E5单元格中的员工姓名,在这个信息表中查询属于哪个部门,也就是咱们常说的逆向查询,就可以使用LOOKUP函数 ...

  3. 深入flask中的request

    缘起 在使用flask的时候一直比较纳闷request是什么原理,他是如何保证多线程情况下对不同请求参数的隔离的. 准备知识 在讲request之前首先需要先理解一下werkzeug.local中的几 ...

  4. selenium_基本用法

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  5. 即将上线的Hive服务器面临的一系列填坑笔记

    即将上线的Spark服务器面临的一系列填坑笔记 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.18/10/19 16:36:31 WARN metastore.ObjectSt ...

  6. 增加/删除临时IP地址

    启动一个down状态的网卡并设置临时IP: ifconfig eth3 172.168.1.100 netmask 255.255.255.0 up 删除网卡的临时IP地址: ip addr del ...

  7. POJ 2970 The lazy programmer

    The lazy programmer Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2785   Accepted: 70 ...

  8. Codeforces 954 G. Castle Defense

    http://codeforces.com/problemset/problem/954/G 二分答案 检验的时候,从前往后枚举,如果发现某个位置的防御力<二分的值,那么新加的位置肯定是越靠后越 ...

  9. Solr之.net操作

    http://www.cnblogs.com/zhangweizhong/category/771055.html 插入: SolrNet.Startup.Init<Movie>(&quo ...

  10. Tomcat数据源的原理,配置及使用(JNDI)

    Tomcat数据源的原理,配置及使用 知识点: 1.数据源的作用及操作原理; 2.Tomcat中数据源的配置; 3.数据源的查找及使用 传统JDBC使用过程存在以下四个步骤: 1.加载驱动程序 2.进 ...