laravel中的自定义验证规则

Laravel内置的验证规则不够用?咋办?
我们自己来定义!

首先在 app\Providers\AppServiceProvider.php 文件中添加我们自定义的规则:

在boot方法中添加:

<?php

namespace App\Providers;


use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {   //密码格式验证 密码必须由字母和数字组成
        \Illuminate\Support\Facades\Validator::extend('zzregex', function($attribute, $value, $parameters) {
            return preg_match('/([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*/', $value);
        });
        //手机号格式验证
        \Illuminate\Support\Facades\Validator::extend('telphone', function($attribute, $value, $parameters) {
            return preg_match('/^1[34578][0-9]{9}$/', $value);
        });
    }

当然 上面代码中\Illuminate\Support\Facades\Validator 可以换成Validator 然后在头部use Illuminate\Support\Facades\Validator ; 就行了

自定义验证错误信息,找到resources\lang\validation.php文件
在return中添加

<?php

return [

    'zzregex'             => '密码必须包含字母和数字',
    'telphone'           => 'T手机号格式不正确',
]

这样就可以在用我们自定义的规则了。

自定义验证错误信息也可以在使用的时候添加到message数组中,如下:

public function register(){
        $input=Input::all();
        //获取用户输入的账号和密码
        $rules=[
            'code'=>'required',
            'mobile'=>'required|telphone',
            'password'=>'required|between:6,16|zzregex'
        ];
        $message=[
            'code.required'=>'验证码不能为空',
            'mobile.required'=>'手机号不能为空',
            'mobile.telphone'=>'请输入正确的手机号',
            'password.between'=>'密码必须在6-16位之间',
            'password.zzregex'=>'密码必须由字母和数字组成',
            'password.required'=>'密码不能为空'
        ];
        $validator=Validator::make($input,$rules,$message);
        if(!$validator->passes()){
            $validatorErrs = $validator->errors()->all();
            $errMessages=['errcode'=>1, 'msg'=>$validatorErrs];
            return  response()->json($errMessages);
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值