Laravel-Validator自定义验证规则

      2021年09月20日 星期一 16:00:44     php      laravel   Validator    

1.前往app/Providers/AppServiceProvider

如我需要增加QQ邮箱验证功能,返回true或false;

public function boot()
    {
        Validator::extend('qemail', function($attribute, $value, $parameters) {
            return preg_match('/^[1-9][0-9]{4,}@qq.com$/', $value);
        });
    }

这里qemail就是我自定义规则名称,$value是自动传进去的值

2.前往resources/lang/en/validation.php

<?php 
return [
    'qemail' => '邮箱必须为QQ邮箱',
//...
?>

增加这个就是在验证有错误的时候的返回值

3.使用

某个控制器

//...
$data = $req->all();
$val = Validator::make($data,[
    'email' => 'required|email|qemail',
    'pwd' => 'required|max:15|min:4',
    'vertical' => 'required|verticaltf'
],[
    'email.required' => '邮箱必填',
    'email.email' => '不符合规范的邮箱',
    'pwd.required' => '密码必须填写',
    'pwd.max' => '密码长度需小于15个字符',
    'pwd.min' => '密码长度需大于4个字符',
    'vertical.required' => '验证码必填'
]);
if($val->fails()){ //验证不通过
    return back()->withErrors($val)->withInput();
}else{
    //...
}

当验证不通过将返回视图back(),并且携带错误提示withErrors($val)到页面中,页面再使用

{{-- 表单内容有误 --}}
@if (count($errors) > 0)
    <div class="alert alert-danger">
        <a href="#" class="close" data-dismiss="alert">
            &times;
        </a>
        <ul>
            @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

将提示信息显示

效果:

在这里插入图片描述

RorinL为我的csdn博客账户


暂无评论

发表评论