3分钟短文 | Laravel表单验证没规则可用?你试试自定义,真香!
时间:2022-07-23
本文章向大家介绍3分钟短文 | Laravel表单验证没规则可用?你试试自定义,真香!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
引言
Laravel内部提供了很多用于表单验证的规则,都是通过 Validator 对象进行解析和处理。但是我们会遇到现有规则无法满足验证需求的情况。
今天我们就来说一个需求,如何验证一个整数字段比另外一个整数字段的值大?
学习时间
假设有两个字段 initial_page 和 end_page,接收到请求参数之后,经过如下的规则过滤:
'initial_page' => 'required_with:end_page|integer|min:1|digits_between: 1,5',
'end_page' => 'required_with:initial_page|integer|min:2|digits_between:1,5'
规则中使用 required_with 选项限制一个另一个字段存在时执行的验证规则。那么如何实现,end_page 字段的值,一定比 initial_page 的值大呢?为了验证方式的统一,不准备把这个规则写到控制器逻辑内。用laravel的方式该如何实现呢?
laravel内我们可以使用扩展功能,自定义验证规则,扩展 Validator 对象的验证规则。我们需要把扩展规则写到 AppServiceProvider 内,使得系统加载时可以正确地使用。在 boot 方法内写入下面的代码:
Validator::extend('greater_than_field', function($attribute, $value, $parameters, $validator) {
$min_field = $parameters[0];
$data = $validator->getData();
$min_value = $data[$min_field];
return $value > $min_value;
});
其中 greater_than_field 是验证规则的缩写,我们只需传入验证参数,指定返回 true 、false 的逻辑条件。对于验证失败返回的错误信息,使用下面的代码:
Validator::replacer('greater_than_field', function($message, $attribute, $rule, $parameters) {
return str_replace(':field', $parameters[0], $message);
});
以上两个方式准备完毕后,就可以在验证规则内使用了:
$rules = [
'initial_page' => 'required_with:end_page|integer|min:1|digits_between: 1,5',
'end_page' => 'required_with:initial_page|integer|greater_than_field:initial_page|digits_between:1,5'
];
- Sedo榜单中,域名“加密世界”CryptoWorld.com七位数夺冠
- ExtJs学习笔记(20)-利用ExtJs的Ajax与服务端WCF交互
- 2018年热点分享:比特币到底是什么?
- JVM快速入门
- SQL学习之使用常用函数处理数据
- Javascript快速入门(上篇)
- SQL练习之不反复执行相同的计算
- SQL练习之求解填字游戏
- 快速入门系列--WCF--08扩展与新特性
- SQL练习之两个列值的交换
- Parcel,零配置开发 React 应用!
- 像 React Native 开发 APP 一样,用wn-cli 开发 weapp (微信小程序)
- 正则表达式快速入门
- JavaScript之<script>标签简介
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Android 控制ScrollView滚动的实例详解
- Android 判断是否能真正上网的实例详解
- Android UI设计与开发之PopupWindow仿腾讯新闻底部弹出菜单
- android实现微信联合登录开发示例
- 详解Android WebView加载html片段
- Ubuntu 20.04最佳配置指南(新手必备)
- ScrollView与SeekBar绑定实现滑动时出现小滑块效果
- Android用StaticLayout实现文字转化为图片效果(类似长微博发送)
- Android中Dialog自定义上下文花式菜单
- Android ListView与getView调用卡顿问题解决办法
- Android四种数据存储的应用方式
- ViewDragHelper实现QQ侧滑效果
- Android实现双击TitleBar回顶部的功能示例代码
- windows10 更新Ubuntu20.04 LTS的方法步骤
- Android 中解决Viewpage调用notifyDataSetChanged()时界面无刷新的问题