laravel 设置自定义 Validator
转自:https://learnku.com/docs/laravel/5.4/validation/1234#custom-validation-rules
自定义验证规则
Laravel 提供了许多有用的验证规则。但你可能想自定义一些规则。注册自定义验证规则的方法之一,就是使用 Validator Facade 中的 extend 方法,让我们在 服务提供者 中使用这个方法来注册自定义的验证规则:
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator; class AppServiceProvider extends ServiceProvider
{
/**
* 启动任意应用程序服务。
*
* @return void
*/
public function boot()
{
Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
return $value == 'foo';
});
} /**
* 注册服务容器。
*
* @return void
*/
public function register()
{
//
}
}
自定义的验证闭包接收四个参数:要被验证的属性名称 $attribute,属性的值 $value,传入验证规则的参数数组 $parameters,及 Validator 实例。
除了使用闭包,你也可以传入类和方法到 extend 方法中:
Validator::extend('foo', 'FooValidator@validate');
自定义错误消息
另外你可能还需要为自定义规则来定义一个错误消息。这可以通过使用自定义内联消息数组或是在验证语言包中加入新的规则来实现。此消息应该被放在数组的第一级,而不是被放在 custom 数组内,这是仅针对特定属性的错误消息:
"foo" => "你的输入是无效的!", "accepted" => ":attribute 必须被接受。", // 其余的验证错误消息...
当你在创建自定义验证规则时,你可能需要定义占位符来取代错误消息。你可以像上面所描述的那样通过 ValidatorFacade 来使用 replacer 方法创建一个自定义验证器。通过 服务提供者 中的 boot 方法可以实现:
/**
* 启动任意应用程序服务。
*
* @return void
*/
public function boot()
{
Validator::extend(...); Validator::replacer('foo', function ($message, $attribute, $rule, $parameters) {
return str_replace(...);
});
}
隐式扩展功能
默认情况下,若有一个类似 required 这样的规则,当此规则被验证的属性不存在或包含空值时,其一般的验证规则(包括自定扩展功能)都将不会被运行。例如,当 integer 规则的值为 null 时 unique 将不会被运行:
$rules = ['name' => 'unique']; $input = ['name' => null]; Validator::make($input, $rules)->passes(); // true
如果要在属性为空时依然运行此规则,则此规则必须暗示该属性为必填。要创建一个「隐式」扩展功能,可以使用 Validator::extendImplicit() 方法:
Validator::extendImplicit('foo', function ($attribute, $value, $parameters, $validator) {
    return $value == 'foo';
});
{note} 一个「隐式」扩展功能只会 暗示 该属性为必填。它的实际属性是否为无效属性或空属性主要取决于你。
laravel 设置自定义 Validator的更多相关文章
- C# 的tcp Socket设置自定义超时时间
		
简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...
 - SharePoint 2013 设置自定义布局页
		
在SharePoint中,我们经常需要自定义登陆页面.错误页面.拒绝访问等:不知道大家如何操作,以前自己经常在原来页面改或者跳转,其实SharePoint为我们提供了PowerShell命令,来修改这 ...
 - cPanel设置自定义404错误页
		
利用这个cpanel的错误页工具,你就可以定制错误页面了.设置自定义404错误页,有两种简单的方法. 一,利用cpanel后台控制面板添加设置404自定义错误页的方法 步骤 1.登录cPa ...
 - 【swift,oc】ios开发中巧用自动布局设置自定义cell的高度
		
ios开发中,遇到自定义高度不定的cell的时候,我们通常的做法是抽取一个frame类,在frame类中预算好高度,再返回. 但是苹果出来自动布局之后...春天来了!!来看看怎么巧用自动布局设置自定义 ...
 - XamarinAndroid组件教程设置自定义子元素动画(二)
		
XamarinAndroid组件教程设置自定义子元素动画(二) (9)打开MainActivity.cs文件,为RecylerView的子元素设置添加和删除时的透明动画效果.代码如下: …… usin ...
 - XamarinAndroid组件教程设置自定义子元素动画(一)
		
XamarinAndroid组件教程设置自定义子元素动画(一) 如果在RecyclerViewAnimators.Animators中没有所需要的动画效果,就可以自定义一个.此时,需要让自定义的动画继 ...
 - 使用RecyclerView设置自定义分割线
		
在安卓开发中,RecyclerView控件来做一些列表是非常方便的,如何使用在网上很多文章,这次着重来说一下怎么设置自定义分割线: 首先,我们来看一下怎么设置默认的分割线 RecyclerView m ...
 - SharePoint REST API - 使用REST接口对列表设置自定义权限
		
博客地址:http://blog.csdn.net/FoxDave SharePoint网站.列表和列表项都属于SecurableObject类型.默认情况下,一个安全对象继承父级的权限.对一个对 ...
 - XCode 设置自定义环境变量
		
XCode 设置自定义环境变量 Product -> Scheme -> Edit Scheme -> 之后设置环境变量.
 
随机推荐
- Kali Linux安装及中文指南
			
Kali Linux安装及中文指南 Kali Linux安装教程:https://blog.csdn.net/u012318074/article/details/71601382 Kali Linu ...
 - iOS 审核app被拒绝的各种理由以及翻译
			
原 apps被拒绝的各种理由以及翻译:http://my.oschina.net/201003674/blog/356189#OSC_h1_3 1. Terms and conditions(法律与条 ...
 - LOCK - 明确地锁定一个表
			
SYNOPSIS LOCK [ TABLE ] name [, ...] [ IN lockmode MODE ] where lockmode is one of: ACCESS SHARE | R ...
 - WithEvents的一些用法
			
WithEvents的一些用法说明:1.WithEvents是指定一个或多个已声明成员变量引用可引发事件的类的实例.2.当某个变量是使用 WithEvents 定义时,可以用声明方式指定某个方法使用 ...
 - 计蒜客 蓝桥模拟    A. 结果填空:矩阵求和
			
给你一个从 n×nn \times nn×n 的矩阵,里面填充 111 到 n×nn \times nn×n .例如当 nnn 等于 333 的时候,填充的矩阵如下. 1 1 2 3 2 4 5 ...
 - Linux openssh8.0p1升级步骤
			
前期准备开启本机telnet服务,以防openssh升级失败无法连接服务器.注:redhat 5 6 和 redhat7 开机启动配置相关文件不同,请注意 1.安装zlibtar -xzvf zlib ...
 - qt学习(一)qt三个文件函数的框架
			
学到点什么, 而不是复制着什么, 每天敲着别人给的代码,苦涩得改完bug, 就这样一天天的过去, 实质上并没有学到什么, 别人的思想只是拿来借鉴, 你的思想是好是坏都是你的, 不用急着抛弃自己. 从q ...
 - A - Race to 1 Again
			
题目 Rimi learned a new thing about integers, which is - any positive integer greater than 1 can be di ...
 - luogu【P1024 一元三次方程求解】题解
			
题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...
 - 【bzoj2821】作诗(Poetize)
			
*题目描述: 神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗.由于时间紧迫,SHY作完诗 之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次,每次只阅 ...