Laravel Form 表单的数据校验
例如,要使用手机号加验证码的方式提供登录网站的功能,那么在处理前端提交的 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 表单的数据校验的更多相关文章
- django做form表单的数据验证
我们之前写的代码都没有对前端input框输入的数据做验证,我们今天来看下,如果做form表单的数据的验证 在views文件做验证 首先用文字描述一下流程 1.在views文件中导入forms模块 2. ...
- js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题
js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...
- thinkPHP5.0使用form表单提交数据和删除文章,不用TP的提示页面,使用弹出提示信息
form表单提交数据和删除文章时,TP的默认信息提示页面的看起来不是很好看,想要实现弹窗提示怎么做呢? 前端:可以使用前端的一个知识--iframe,iframe元素会创建包含另外一个文档的内联框架: ...
- form表单序列化数据之后,追加额外数据
form表单序列化数据之后追加额外数据多使用在js中,下面是追加额外数据的代码: <span style="font-size:18px;">$.param({'inv ...
- springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据
springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据 表单html: <form class="form-horizontal ...
- day75 form 组件(对form表单进行输入值校验的一种方式)
我们的组件是什么呢 select distinct(id,title,price) from book ORM: model.py class Book(): title=model.CharFiel ...
- iview form表单数值类型校验「iview自定义form表单校验器」
摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. ...
- Form表单提交数据的几种方式
一.submit提交 在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type='submit'>)就可以进行数据的提交, ...
- C# 模拟提交 Form表单的数据
用 HttpWebRequest Post方法模拟提交Form表单数据时,需要设置 ContentType 为 "application/x-www-form-urlencoded" ...
随机推荐
- Hadoop生态圈-Oozie实战之调度shell脚本
Hadoop生态圈-Oozie实战之调度shell脚本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客展示案例:使用Oozie调度Shell脚本. 1>.解压官方案例 ...
- Python全栈问答小技巧_2
Python全栈测试题(二) 作者:尹正杰 声明:答案如有偏差,欢迎指正!欢迎加入高级运维工程师之路:598432640 本文答题用的Python版本是:Python 3.5.2,请知晓! 1. 计算 ...
- JavaEE学习总结(十二)—MyEclipse开发工具与HTML
一.MyEclipse MyEclipse,是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能 ...
- mysql优化问题汇总
sql优化-->分区-->分表-->垂直分库-->水平分库-->读写分离 分区 关于分区的博客推荐这个:https://blog.csdn.net/youzhouliu/ ...
- loadrunner controller如何执行测试
使用Virtual User Generator编写需要测试的脚本 打开controller,在左侧的available scripts里选择需要测试的脚本添加(Add)到scripts in s ...
- 牛客多校第十场-D- Rikka with Prefix Sum
链接:https://www.nowcoder.com/acm/contest/148/D来源:牛客网 Prefix Sum is a useful trick in data structure p ...
- 《Maven实战》笔记
maven是什么 maven是 构建工具 依赖关系工具 项目信息管理工具 而JAVA世界的ant只是一个构建工具,不具备依赖管理的功能,需要配合使用ivy进行依赖管理. maven的安装 下载mave ...
- python 小程序,打印数字
要求如下: 指定一个数字 x ,然后打印 1到x 的所有数字,并问是否继续打印,否退出程序,是就继续.再指定一个数字 y ,如果 y> x 就显示 x+1 到 y 的所有数字,y <= x ...
- Vue加载json文件
一.在build/dev-server.js文件里 var app = express() 这句代码后面添加如下(旧版): var appData = require('../address.json ...
- Python基础(函数部分)-day04
写在前面 上课第四天,打卡: 加勒比海盗今天上映:端午节公司发的粽子很有范! 一.函数的基本概念 - 函数是什么? 函数,就是一个'锤子',一个具有特定功能的'锤子',使用者可以在适当的时候使用这个 ...