简单介绍


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专题文件夹

最新文章

  1. [LintCode] Linked List Cycle 单链表中的环
  2. Atitit.加密算法ati Aes的框架设计
  3. POJ 2828 Buy Tickets(线段树 树状数组/单点更新)
  4. 【HDU 3401 Trade】 单调队列优化dp
  5. php--数组函数array
  6. javaMail编写案列
  7. ios上架
  8. tomcat docBase 和 path
  9. [原]RobotFrameWork(十一)AutoItLibrary测试库在win7(64bit)下安装及简单使用
  10. JavaScript高级程序设计-13:事件
  11. 201521123096《Java程序设计》第十三周学习总结
  12. SDL 开发实战(一):SDL介绍及开发环境配置
  13. Axios
  14. 【A tour of go】练习题
  15. fiddler不能抓某些的包的原因
  16. UVA1025-A Spy in the Metro(动态规划)
  17. MySQL 无法连接
  18. OSPF网络类型不一致路由无法计算的问题
  19. Android 多屏适配解决方式
  20. ajax表单提交post(错误400) 序列化表单(post表单转换json(序列化))

热门文章

  1. [luogu] P4040 [AHOI2014/JSOI2014]宅男计划(贪心)
  2. 【codeforces 767E】Change-free
  3. [terry笔记]对人员列表文件进行数据库操作
  4. java有参无参构造器的的执行顺序
  5. HTTP请求和响应模式(B/S)(2)
  6. android 联系人中,在超大字体下,加入至联系人界面(ConfirmAddDetailActivity)上有字体显示不全的问题
  7. Tachyon在Spark中的作用(Tachyon: Reliable, Memory Speed Storage for Cluster Computing Frameworks 论文阅读翻译)
  8. (手冊)Animation 之 使用Animation View
  9. sap abap 对字符串的操作
  10. silverlight wpf DataTemplate Command binding