后盾网lavarel视频项目---自定义验证和自定义验证规则
生活随笔
收集整理的這篇文章主要介紹了
后盾网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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 后盾网lavarel视频项目---2、p
- 下一篇: 后盾网lavarel视频项目---lar