码迷,mamicode.com
首页 > 其他好文 > 详细

11.Laravel5学习笔记:扩展 Validator 类

时间:2015-08-12 19:20:38      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:validator   laravel扩展   laravel5   laravel验证   

简介


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 类

标签:validator   laravel扩展   laravel5   laravel验证   

原文地址:http://blog.csdn.net/hel12he/article/details/47449149

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!