當前位置:
首頁 >
后盾网lavarel视频项目---自定义验证和自定义验证规则
發布時間:2025/7/14
42
豆豆
生活随笔
收集整理的這篇文章主要介紹了
后盾网lavarel视频项目---自定义验证和自定义验证规则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
后盾網lavarel視頻項目---自定義驗證和自定義驗證規則
一、總結
一句話總結:
1、自定義驗證就是用的自定義驗證請求類:php artisan make:request AdminPost
2、自定義驗證規則就是Validator的extend方法:Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) {
?
1、如何創建請求驗證?
php artisan make:request AdminPost
app/Http/Requests/AdminPost.php會被創建
?
2、控制器中如何使用自定義的驗證類?
使用對應的請求實例即可:public function changePassword(AdminPost $request){
?
?
3、自定義請求驗證類中如何自定義驗證規則?
Validator的extend方法:Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) {
/*** 添加驗證規則*/public function addValidator(){//驗證用戶密碼Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) {return Hash::check($value,Auth::guard('admin')->user()->password);});}?
?
4、自定義請求驗證類中如何自定義驗證錯誤的返回消息?
直接寫一個message函數即可:應該是覆寫了父類的 message函數
/*** 中文提示* @return array*/public function messages(){return ['original_password.required'=>'原密碼不能為空','password.required'=>'密碼不能為空','password_confirmation.required'=>'確認密碼不能為空','password.confirmed'=>'兩次密碼不一致','original_password.check_password'=>'原密碼不正確',];}?
?
5、修改密碼時候比較原密碼是否正確的邏輯怎么寫?
獲取用戶密碼了用戶填寫的原密碼比較簡單,然后用Hash服務的check方法即可:return Hash::check($value,Auth::guard('admin')->user()->password);
public function addValidator(){//驗證用戶密碼Validator::extend('check_password', function ($attribute, $value, $parameters, $validator) {return Hash::check($value,Auth::guard('admin')->user()->password);});}?
?
?
二、自定義驗證
示例:
?
?
1、創建請求驗證
php artisan make:request AdminPost
app/Http/Requests/AdminPost.php會被創建
?
2、完善請求驗證類: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 * 添加驗證規則 25 */ 26 public function addValidator(){ 27 //驗證用戶密碼 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'=>'確認密碼不能為空', 58 'password.confirmed'=>'兩次密碼不一致', 59 'original_password.check_password'=>'原密碼不正確', 60 ]; 61 } 62 }26-31行:是驗證用戶修改密碼的時候原密碼時候正確的驗證規則,是自定義的驗證規則,在第42行有使用
52-61行:驗證的信息提示
第40行:將自定義的信息規則使用起來
第19行:驗證用戶是否登錄
第8行:用Hash服務來比較密碼
第29行:$value就是表單提交上來的字段,也就是比較的字段,在這里是original_password
第28行:這里的'check_password'就是這個 自定義驗證的名字
?
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 }驗證是自動驗證,所以控制器中每驗證什么事,也就是需要用到驗證實例,第18行,AdminPost $request
?
?
?
轉載于:https://www.cnblogs.com/Renyi-Fan/p/11515081.html
總結
以上是生活随笔為你收集整理的后盾网lavarel视频项目---自定义验证和自定义验证规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 后盾网lavarel视频项目---2、p
- 下一篇: 后盾网lavarel视频项目---lar