zoukankan      html  css  js  c++  java
  • laravel5.5 自定义验证规则——手机验证RULE

    相信很多小伙伴和我一样烦恼,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

  • 相关阅读:
    sql编码造成的安全问题(基于mysql8.0版本)
    [HY000] [2054] php连接mysql时错误
    jetbrains(phpstrom,webstorm等)破解
    XSS(二)
    XSS(一)
    ctf中rsa攻击方法
    扩展欧几里得算法证明及求乘法逆元
    mac泛洪攻击&arp欺骗(python脚本)
    Flutter 中 实现 单选对话框 和页面中实现单选框
    解决Flutter混合开发时 is not a readable directory 问题
  • 原文地址:https://www.cnblogs.com/x-x-j/p/9287536.html
Copyright © 2011-2022 走看看