日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

后盾网lavarel视频项目---自定义验证和自定义验证规则

發(fā)布時(shí)間:2025/7/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 后盾网lavarel视频项目---自定义验证和自定义验证规则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

后盾網(wǎng)lavarel視頻項(xiàng)目---自定義驗(yàn)證和自定義驗(yàn)證規(guī)則

一、總結(jié)

一句話總結(jié):

1、自定義驗(yàn)證就是用的自定義驗(yàn)證請(qǐng)求類:php artisan make:request AdminPost
2、自定義驗(yàn)證規(guī)則就是Validator的extend方法:Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) {

?

1、如何創(chuàng)建請(qǐng)求驗(yàn)證?

php artisan make:request AdminPost

app/Http/Requests/AdminPost.php會(huì)被創(chuàng)建

?

2、控制器中如何使用自定義的驗(yàn)證類?

使用對(duì)應(yīng)的請(qǐng)求實(shí)例即可:public function changePassword(AdminPost $request){

?

?

3、自定義請(qǐng)求驗(yàn)證類中如何自定義驗(yàn)證規(guī)則?

Validator的extend方法:Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) {
/*** 添加驗(yàn)證規(guī)則*/public function addValidator(){//驗(yàn)證用戶密碼Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) {return Hash::check($value,Auth::guard('admin')->user()->password);});}

?

?

4、自定義請(qǐng)求驗(yàn)證類中如何自定義驗(yàn)證錯(cuò)誤的返回消息?

直接寫一個(gè)message函數(shù)即可:應(yīng)該是覆寫了父類的 message函數(shù)
/*** 中文提示* @return array*/public function messages(){return ['original_password.required'=>'原密碼不能為空','password.required'=>'密碼不能為空','password_confirmation.required'=>'確認(rèn)密碼不能為空','password.confirmed'=>'兩次密碼不一致','original_password.check_password'=>'原密碼不正確',];}

?

?

5、修改密碼時(shí)候比較原密碼是否正確的邏輯怎么寫?

獲取用戶密碼了用戶填寫的原密碼比較簡單,然后用Hash服務(wù)的check方法即可:return Hash::check($value,Auth::guard('admin')->user()->password);
public function addValidator(){//驗(yàn)證用戶密碼Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) {return Hash::check($value,Auth::guard('admin')->user()->password);});}

?

?

?

二、自定義驗(yàn)證

示例:

?

?

1、創(chuàng)建請(qǐng)求驗(yàn)證

php artisan make:request AdminPost

app/Http/Requests/AdminPost.php會(huì)被創(chuàng)建

?

2、完善請(qǐng)求驗(yàn)證類:app/Http/Requests/AdminPost.php

1 <?php 2 3 namespace App\Http\Requests; 4 5 use Illuminate\Foundation\Http\FormRequest; 6 use Auth; 7 use Validator; 8 use Hash; 9 10 class AdminPost extends FormRequest 11 { 12 /** 13 * Determine if the user is authorized to make this request. 14 * 15 * @return bool 16 */ 17 public function authorize() 18 { 19 return Auth::guard('admin')->check(); 20 //return false; 21 } 22 23 /** 24 * 添加驗(yàn)證規(guī)則 25 */ 26 public function addValidator(){ 27 //驗(yàn)證用戶密碼 28 Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) { 29 return Hash::check($value,Auth::guard('admin')->user()->password); 30 }); 31 } 32 33 /** 34 * Get the validation rules that apply to the request. 35 * 36 * @return array 37 */ 38 public function rules() 39 { 40 $this->addValidator(); 41 return [ 42 'original_password'=>'sometimes|required|check_password', 43 'password'=>'sometimes|required|confirmed', 44 'password_confirmation'=>'sometimes|required', 45 ]; 46 } 47 48 /** 49 * 中文提示 50 * @return array 51 */ 52 public function messages() 53 { 54 return [ 55 'original_password.required'=>'原密碼不能為空', 56 'password.required'=>'密碼不能為空', 57 'password_confirmation.required'=>'確認(rèn)密碼不能為空', 58 'password.confirmed'=>'兩次密碼不一致', 59 'original_password.check_password'=>'原密碼不正確', 60 ]; 61 } 62 }

26-31行:是驗(yàn)證用戶修改密碼的時(shí)候原密碼時(shí)候正確的驗(yàn)證規(guī)則,是自定義的驗(yàn)證規(guī)則,在第42行有使用

52-61行:驗(yàn)證的信息提示

第40行:將自定義的信息規(guī)則使用起來

第19行:驗(yàn)證用戶是否登錄

第8行:用Hash服務(wù)來比較密碼

第29行:$value就是表單提交上來的字段,也就是比較的字段,在這里是original_password

第28行:這里的'check_password'就是這個(gè) 自定義驗(yàn)證的名字

?

3、控制器 :app/Http/Controllers/Admin/MyController.php

1 <?php 2 3 namespace App\Http\Controllers\Admin; 4 5 use App\Http\Requests\AdminPost; 6 use Illuminate\Http\Request; 7 use App\Http\Controllers\Controller; 8 use Auth; 9 10 class MyController extends Controller 11 { 12 //修改密碼的界面 13 public function changePasswordForm(){ 14 return view('admin.my.change_pass'); 15 } 16 17 //修改密碼 18 public function changePassword(AdminPost $request){ 19 $model=Auth::guard('admin')->user(); 20 $model->password=bcrypt($request['password']); 21 $model->save(); 22 } 23 }

驗(yàn)證是自動(dòng)驗(yàn)證,所以控制器中每驗(yàn)證什么事,也就是需要用到驗(yàn)證實(shí)例,第18行,AdminPost $request

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/Renyi-Fan/p/11515081.html

總結(jié)

以上是生活随笔為你收集整理的后盾网lavarel视频项目---自定义验证和自定义验证规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。