laravel5.5 自定義驗證規則——手機驗證RULE

相信不少小夥伴和我同樣煩惱,laravel沒有自帶手機號的驗證,每次驗證手機號都要寫正則這類的規則,每次都是repeat yourself!違背了編碼的一個原則,就是Don't repeat yourselfphp

因此今天有空就像你們介紹一下laravel5.5的一個新特性,RULE的使用html

在你使用laravel5.5以後,在php artisan list以後,你會看到laravel

 

有一個新命令 make:rule, 這個就是新增的。app

這裏咱們自定義一個手機驗證規則php artisan make:rule Mobile函數

回車以後,咱們會在app目錄下看到this

打開裏面的Mobile.php編碼

裏面3個函數,第一個自構函數,第二個passes()是咱們主要業務邏輯處理的地方,第一個鍵名參數,第二個是鍵值參數,第三個函數是錯誤信息提示函數,當passes函數返回false時調用。spa

你能夠自定義你的錯誤提示信息,附上個人自定義驗證代碼code

 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 }

是否是很簡單。定義好驗證規則後,使用起來就特別方便啦~~~htm

在request文件中 new Mobile() 就能夠了

不再用寫複雜的正則啦。

 

本文屬於我的原創,歡迎轉載,轉載請附連接:http://www.javashuo.com/article/p-pghynpjr-q.html

相關文章
相關標籤/搜索