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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM