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);
}

  

posted @ 2020-03-16 15:42  明明一颗大白菜  阅读(1548)  评论(0编辑  收藏  举报
<-- -->