摘要:我們可以利用來封裝表單驗證代碼,從而精簡中的代碼邏輯,使其專注于業(yè)務(wù)。如果有更好的解決方法,歡迎留言。
我們可以利用Form Request來封裝表單驗證代碼,從而精簡Controller中的代碼邏輯,使其專注于業(yè)務(wù)。而獨立出去的表單驗證邏輯可以復(fù)用到其它請求中,看過幾篇文章,大多都是講怎么創(chuàng)建Request,表面看起來是將邏輯與業(yè)務(wù)分離了,但是沒有做到復(fù)用,一個業(yè)務(wù)就得新建一個Request類實在太累,索性這里我將項目全部的表單驗證放在一個Request類里,實現(xiàn)高度可復(fù)用,下面是具體實現(xiàn)。
首先創(chuàng)建Requestphp artisan make:request CreateUserRequestCreateUserRequest代碼塊
"required|between:2,4", "Student.userAge" => "required|integer", "Student.userSex" => "required|integer", "Student.addr" => "required", ]; //這里我只寫了部分字段,可以定義全部字段 protected $strings_key = [ "Student.userName" => "用戶名", "Student.userAge" => "年齡", "Student.userSex" => "性別", "Student.addr" => "地址", ]; //這里我只寫了部分情況,可以按需定義 protected $strings_val = [ "required"=> "為必填項", "min"=> "最小為:min", "max"=> "最大為:max", "between"=> "長度在:min和:max之間", "integer"=> "必須為整數(shù)", "sometimes"=> "", ]; /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true;//修改為true } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { $rules = $this->rules; // 根據(jù)不同的情況, 添加不同的驗證規(guī)則 if (Request::getPathInfo() == "/save")//如果是save方法 { $rules["Student.addr"] = "sometimes"; } if (Request::getPathInfo() == "/edit")//如果是edit方法 { $rules["Student.addr"] = "required|min:5"; } return $rules; } //返回給前臺的錯誤信息 public function messages(){ $rules = $this->rules(); $k_array = $this->strings_key; $v_array = $this->strings_val; foreach ($rules as $key => $value) { $new_arr = explode("|", $value);//分割成數(shù)組 foreach ($new_arr as $k => $v) { $head = strstr($v,":",true);//截取:之前的字符串 if ($head) {$v = $head;} $array[$key.".".$v] = $k_array[$key].$v_array[$v]; } } return $array; } }控制器具體方法
/** * Show the form for creating a new resource. * * @return IlluminateHttpResponse */ public function save(AppHttpRequestsCreateUserRequest $request) { //這里會自動調(diào)用表單驗證 //驗證成功后繼續(xù)向下執(zhí)行 $data = $request->input("Student"); if(User::create($data)){ return redirect("/")->with("success", "添加成功!"); }else{ return redirect("/create")->with("error", "添加失敗!"); } }對應(yīng)的模板文件 效果展示
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/25877.html
摘要:當(dāng)查詢數(shù)據(jù)時,本地范圍允許我們創(chuàng)建自己的查詢構(gòu)造器鏈?zhǔn)椒椒?。這樣便會知道這是一個本地范圍并且可以在查詢構(gòu)造器中使用。某些查詢構(gòu)造器不可用或者說可用但是方法名不同,關(guān)于這些請查閱所有集合的方法。 showImg(https://segmentfault.com/img/remote/1460000017877956?w=800&h=267); Laravel 因可編寫出干凈,可用可調(diào)試的...
摘要:預(yù)備知識目錄后面簡稱目錄后面簡稱入口文件過程詳解范例定義路由文件路徑修改如下定義中間件中間件路徑新建中間件必須返回響應(yīng)在處理請求之前做些什么在處理請求之后做些什么中間件處理完畢后,做些什么中間件處理完畢后,做些什么注冊中間件中間件配件文件路 I. 預(yù)備知識 Laravel 目錄 /path/to 后面簡稱 Laravel Web 目錄 Laravel/public 后面簡稱 Web 入...
摘要:今天我來分享中層關(guān)于請求響應(yīng)與表單驗證的知識。手動創(chuàng)建驗證請求之前的內(nèi)容是直接使用的方法來實現(xiàn)表單驗證。下一步到這篇為止,我完成了入門指南核心概念層的路由中間件控制器請求響應(yīng)表單驗證的學(xué)習(xí)和整理。 showImg(https://segmentfault.com/img/remote/1460000010882838); 今天我來分享 Laravel 中 HTTP 層關(guān)于請求、響應(yīng)與表...
摘要:本節(jié)內(nèi)容比較簡單,之前我們使用方法來進行字段驗證,這樣做有一個不好的地方就是,如果你要在很多地方使用同樣的驗證,就需要重復(fù)編寫代碼。因此,提供另外一種方式來進行字段驗證,即請求類。 本節(jié)內(nèi)容比較簡單,之前我們使用 validator 方法來進行字段驗證,這樣做有一個不好的地方就是,如果你要在很多地方使用同樣的驗證,就需要重復(fù)編寫代碼。因此,Laravel 提供另外一種方式來進行字段驗證...
摘要:幾乎在每一個應(yīng)用當(dāng)中都會有表單,而有表單基本就離不開表單驗證。在中,其實可以說是有兩種方式來進行表單驗證使用和使用。然后,上面的驗證規(guī)則是對于和兩個字段,我們需要用戶為其填充內(nèi)容,不能為空。 原文來自:https://laravist.com/article/15 免費視頻教程地址 https://laravist.com/series/laravel-5-basic Laravis...
閱讀 3041·2021-11-24 09:38
閱讀 3568·2021-11-23 09:51
閱讀 1123·2021-09-09 11:52
閱讀 4143·2021-08-11 11:18
閱讀 1187·2019-08-30 14:05
閱讀 3285·2019-08-30 11:23
閱讀 1841·2019-08-29 17:02
閱讀 1190·2019-08-26 13:49