寞小陌 阅读(20) 评论(0)

相信很多小伙伴和我一样烦恼,laravel没有自带手机号的验证,每次验证手机号都要写正则这类的规则,每次都是repeat yourself!违背了编码的一个原则,就是Don't repeat yourself

所以今天有空就像大家介绍一下laravel5.5的一个新特性,RULE的使用

在你使用laravel5.5之后,在php artisan list之后,你会看到

 

有一个新命令 make:rule, 这个就是新增的。

这里我们自定义一个手机验证规则php artisan make:rule Mobile

回车之后,我们会在app目录下看到

打开里面的Mobile.php

里面3个函数,第一个自构函数,第二个passes()是我们主要业务逻辑处理的地方,第一个键名参数,第二个是键值参数,第三个函数是错误信息提示函数,当passes函数返回false时调用。

你可以自定义你的错误提示信息,附上我的自定义验证代码

 1 class Mobile implements Rule
 2 {
 3     private  $value;
 4     /**
 5      * Create a new rule instance.
 6      *
 7      * @return void
 8      */
 9 
10     public function __construct()
11     {
12         //
13     }
14 
15     /**
16      * Determine if the validation rule passes.
17      *
18      * @param  string  $attribute
19      * @param  mixed  $value
20      * @return bool
21      */
22     public function passes($attribute, $value)
23     {
24         $this->value = $value;
25         $phoneHead = array("128", "134", "135", "136", "137", "138", "139", "147",
26             "150", "151", "152", "157", "158", "159", "182", "183", "184", "187", "188",
27             "130", "131", "132", "145", "155", "156", "173", "175", "176", "185", "186",
28             "133", "153", "180", "181", "189", "170", "171", "177", "178", '199');
29 
30         if(strlen($value) == 11 && is_numeric($value)) {
31             $head = substr($value,0,3);
32             foreach($phoneHead as $getHead) {
33                 if($getHead == $head) {
34                     return true;
35                 }
36             }
37         }
38         return false;
39     }
40 
41     /**
42      * Get the validation error message.
43      *
44      * @return string
45      */
46     public function message()
47     {
48         return "无效的手机号:" . $this->value;
49     }
50 }

是不是很简单。定义好验证规则后,使用起来就特别方便啦~~~

在request文件中 new Mobile() 就可以了

再也不用写复杂的正则啦。

 

本文属于个人原创,欢迎转载,转载请附链接:
https://www.cnblogs.com/x-x-j/p/9287536.html