国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

自定義laravel表單請求驗證類(FormRequest共用一個rules())

張遷 / 3644人閱讀

摘要:我們可以利用來封裝表單驗證代碼,從而精簡中的代碼邏輯,使其專注于業務。如果有更好的解決方法,歡迎留言。

我們可以利用Form Request來封裝表單驗證代碼,從而精簡Controller中的代碼邏輯,使其專注于業務。而獨立出去的表單驗證邏輯可以復用到其它請求中,看過幾篇文章,大多都是講怎么創建Request,表面看起來是將邏輯與業務分離了,但是沒有做到復用,一個業務就得新建一個Request類實在太累,索性這里我將項目全部的表單驗證放在一個Request類里,實現高度可復用,下面是具體實現。

首先創建Request
php artisan make:request CreateUserRequest
CreateUserRequest代碼塊
 "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"=> "必須為整數",
        "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;
        // 根據不同的情況, 添加不同的驗證規則
        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);//分割成數組
            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)
    {
            //這里會自動調用表單驗證
            //驗證成功后繼續向下執行
            $data = $request->input("Student");
            if(User::create($data)){
               return redirect("/")->with("success", "添加成功!");
            }else{
               return redirect("/create")->with("error", "添加失敗!"); 
            }
    }
對應的模板文件
{!! csrf_field() !!}

{{ $errors->first("Student.userName") }}

{{$errors->first("Student.userAge")}}

{{$errors->first("Student.addr")}}

![QQ截圖20170613152555.png](http://upload-images.jianshu.io/upload_images/2825702-f008b65789a425f4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

{{ $errors->first("Student.userSex") }}

效果展示


寫在最后
通過文本可以看到, Form Requests 對于簡化表單請求的數據校驗是非常強大和方便的.這里我做了一些修改,使得rules()能夠可復用且只新增一個Request。如果有更好的解決方法,歡迎留言。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25877.html

相關文章

  • Laravel 5.7 最佳實踐和開發技巧分享

    摘要:當查詢數據時,本地范圍允許我們創建自己的查詢構造器鏈式方法。這樣便會知道這是一個本地范圍并且可以在查詢構造器中使用。某些查詢構造器不可用或者說可用但是方法名不同,關于這些請查閱所有集合的方法。 showImg(https://segmentfault.com/img/remote/1460000017877956?w=800&h=267); Laravel 因可編寫出干凈,可用可調試的...

    ninefive 評論0 收藏0
  • Laravel 從入口到輸出過程詳解

    摘要:預備知識目錄后面簡稱目錄后面簡稱入口文件過程詳解范例定義路由文件路徑修改如下定義中間件中間件路徑新建中間件必須返回響應在處理請求之前做些什么在處理請求之后做些什么中間件處理完畢后,做些什么中間件處理完畢后,做些什么注冊中間件中間件配件文件路 I. 預備知識 Laravel 目錄 /path/to 后面簡稱 Laravel Web 目錄 Laravel/public 后面簡稱 Web 入...

    Harriet666 評論0 收藏0
  • Laravel思維導圖之HTTP請求、響應、表單驗證

    摘要:今天我來分享中層關于請求響應與表單驗證的知識。手動創建驗證請求之前的內容是直接使用的方法來實現表單驗證。下一步到這篇為止,我完成了入門指南核心概念層的路由中間件控制器請求響應表單驗證的學習和整理。 showImg(https://segmentfault.com/img/remote/1460000010882838); 今天我來分享 Laravel 中 HTTP 層關于請求、響應與表...

    lewif 評論0 收藏0
  • Laravel 5.4 入門系列 12. 使用請求進行字段驗證

    摘要:本節內容比較簡單,之前我們使用方法來進行字段驗證,這樣做有一個不好的地方就是,如果你要在很多地方使用同樣的驗證,就需要重復編寫代碼。因此,提供另外一種方式來進行字段驗證,即請求類。 本節內容比較簡單,之前我們使用 validator 方法來進行字段驗證,這樣做有一個不好的地方就是,如果你要在很多地方使用同樣的驗證,就需要重復編寫代碼。因此,Laravel 提供另外一種方式來進行字段驗證...

    BearyChat 評論0 收藏0
  • Laravel 5系列教程七:表單驗證 Validation

    摘要:幾乎在每一個應用當中都會有表單,而有表單基本就離不開表單驗證。在中,其實可以說是有兩種方式來進行表單驗證使用和使用。然后,上面的驗證規則是對于和兩個字段,我們需要用戶為其填充內容,不能為空。 原文來自:https://laravist.com/article/15 免費視頻教程地址 https://laravist.com/series/laravel-5-basic Laravis...

    jindong 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<