简单介绍


Laravel5 中,本身已经提供了丰富的验证规则供我们使用,可是天下应用奇葩多,做为程序猿你会发现永远都有新的验证规则诞生,光是组合已经解救不了你的项目了。这个时候就须要我们扩展 Validator 类,来使之帮助项目继续健康向前发展。

官方给了多种扩展 Validator 的方式,我独爱直接扩展该类,可是关于这一点。官文中又写的寥寥数语。确实新人有些无奈。这里具体说一下,怎样扩展它。

扩展验证类


  • 首先。扩展的收个问题是。我的扩展类应该放在哪儿才好呢?我的意见是:直接在app文件夹下,建立一个文件夹: app/Extensions ,然后这个文件夹中专门用来存放你的各类扩展。

  • 建立文件夹后,我们在这个文件夹中建立一个php文件 MyValidator.php 文件。

<?php

namespace App\Extensions;

use Illuminate\Validation\Validator;
use App\Libary\Util\Validate; /**
*
* @desc 扩展验证类
* @author helei
*/
class MyValidator extends Validator
{
/**
* 验证11位手机号码
*/
public function validateMobile($attribute, $value)
{
if (is_null($value)) {
return false;
} return Validate::isMobile(trim($value));// 这里也能够直接将验证规则写在这里
}
}

这段代码表达了这么一个主题:验证输入的手机号码,是不是一个合法的手机号码。有一个须要特别注意的是 [我们自己定义的验证方法,必须要以 validate 开头]

  • 接下来就是要把我们写的验证类,注冊到容器中,关于 怎样注冊自己的服务到容器 请參考这篇之前的文章

    这里我还是在啰嗦一下,官方文档中,就给了这么一句:

接下来。您须要注冊您自己定义验证器扩展:


Validator::resolver(function(translator,data, rules,messages)

{

return new MyValidator(translator,data, rules,messages);

});

老实说,我人比較SB。当时看到这里的时候,我就郁闷了,你让我注冊。我在哪儿注冊呢?天下之大,处处可注冊,有没有一个规范?说实话,还真没有。真的是,你如今那个服务提供者里边注冊都行,既然如此,我就直接将这部分注冊代码写在了 AppServiceProvider 里边。具体代码例如以下:

class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
/*注冊自己定义验证类*/
/* Validator::resolver(function($translator, $data, $rules, $messages){
return new SalonValidator($translator, $data, $rules, $messages);
}); */
$this->app['validator']->resolver(function ($translator, $data, $rules, $messages){
return new SalonValidator($translator, $data, $rules, $messages);
});
}

OK,这里写了之后。请一定记得将该服务提供者写到 app.php 这个配置文件里去哈。假设你不知道怎么写。说明你没有看我说的 这篇文章

到了这儿。还不算完,另一步。那就官网假设验证错误,都会给出提示信息。这个提示信息,我们在哪里去弄呢?大家能够打开 resources/lang/zh/validation.php 这个文件,我的改动例如以下图:

这里另一点要说明哦。假设你要使用 zh 文件下的信息,请一定在 app/config/app.php 中将locale设置为locale=zh


这里有些同学说,我们怎么没有zh这个文件呢?事实上这是laravel的语言包,网上相当的多啦。只是这里为了大家方便,我免费放一个在CSDN上。供大家下载吧


Laravel5专题文件夹

11.Laravel5学习笔记:扩展 Validator 类的更多相关文章

  1. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  2. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  3. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. python cookbook第三版学习笔记十:类和对象(一)

    类和对象: 我们经常会对打印一个对象来得到对象的某些信息. class pair:     def __init__(self,x,y):         self.x=x         self. ...

  5. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  6. Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

    Caliburn.Micro学习笔记目录 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详 ...

  7. Java学习笔记16---抽象类与接口的浅显理解

    抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...

  8. Linux(10.5-10.11)学习笔记

    3.2程序编码 unix> gcc -01 -o p p1.c p2.c -o用于指定输出(out)文件名. -01,-02 告诉编译器使用第一级或第二级优化 3.2.1机器级代码 机器级编程两 ...

  9. Python学习笔记总结(三)类

    一.类简单介绍 1.介绍 类是Python面向对象程序设计(OOP)的主要工具,类建立使用class语句,通过class定义的对象. 类和模块的差异,类是语句,模块是文件. 类和实例 实例:代表程序领 ...

随机推荐

  1. python学习笔记:第三天

    day03: 1.python中所有的变量都可以改变 2.Print(name)   打印 3.Del name  删除 4.python中python2与python3不能兼容,需要分别安装pyth ...

  2. IDEA Maven Web项目 clone到本地导入到Eclipse中,启动服务器的时候会出现这个错误:SEVERE: Exception starting filter [hiddenHttpMethodFilter]

    背景(Background): 我将一个IDEA的maven web项目clone到本地,并导入到Eclipse中. I imported a MAVEN WEB project which was ...

  3. 一行代码解决IE兼容性问题

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype html> ...

  4. word上怎么打钩

    原文:http://www.wordlm.com/html/2291.html 有时我们在Word中制作一份特殊的表格时,可能会用到这样一些特殊符号,“在方框里打钩”或打叉.这些符号虽看起来简单不起眼 ...

  5. C#-委托 lambda 匿名方法 匿名类型

    1.lambda 匿名方法 匿名类型 delegate void d1(); d1 d = delegate(){Console.WriteLine("this is a test" ...

  6. CSS学习(四)

    伪类(Pseudo-classes) CSS伪类是用来添加一些选择器的特殊效果. 伪类的语法: selector:pseudo-class {property:value;} CSS类也可以使用伪类: ...

  7. Ubuntu: GlusterFS+HBase安装教程

    HBase通常安装在Hadoop HDFS上,但也能够安装在其它实现了Hadoop文件接口的分布式文件系统上.如KFS. glusterfs是一个集群文件系统可扩展到几peta-bytes. 它集合了 ...

  8. Gym 100733J Summer Wars 题解:灵活运用扫描线的思想

    题意: 给你n个点,m个横着的线段.你能够横移这些线段,可是这些线段的相对位置不能改变.假设一个点,在它的正上方和和正下方都有线段(包含线段的终点).则这个点被视为被"屏蔽".问通 ...

  9. HDFS HA架构以及源代码引导

    HA体系架构 相关知识介绍 HDFS master/slave架构,HDFS节点分为NameNode节点和DataNode节点. NameNode存有HDFS的元数据:主要由FSImage和EditL ...

  10. UVALive 4222 /HDU 2961 Dance 大模拟

    Dance Problem Description For a dance to be proper in the Altered Culture of Machinema, it must abid ...