laravel request 類進行form表單驗證


為了簡化controller參數驗證,我們單獨建立一個文件夾,作為我們參數層驗證;具體異常拋出,以及Form 

首先在app\http的文件夾下創建一個新的文件件Requests,進入新創建的文件夾Requests,可以在創建一個文件夾Nav,用於區分不同業務的功能。也可以不用創建

在新創建的文件夾下,創建一個類,例如NavRequest

<?php
 
namespace App\Http\Requests\Nav;
 
use Illuminate\Foundation\Http\FormRequest;
 
class NavRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
 
    public function rules()
    {
        $rules = [
            'h5_id' => 'required |exists:h5_template,h5_id',
            'font_color'=>'string|nullable',
            'select_color'=>'string|nullable',
            'background_color'=>'string|nullable',
            'position'=>'int|required| between:0,1'
        ];
        return $rules;
    }
 
    public function messages()
    {
        $message = [
            'h5_id.required'      =>'h5_id必須填寫',
            'h5_id.exists'      =>'h5_id不存在!',
            'position.required'      =>'請選擇位置!'
        ];
        return $message;
    }
 
}
//第一個方法:authorize(),控制用戶訪問權限
//第二個方法:$rules(),返回驗證的數組
//第三個方法:$message(),返回自定義的錯誤信息

然后創建一個控制器例如UserController

<?php
namespace App\Http\Controllers;

use App\Http\Requests\Nav\NavRequest;

public function index(NavRequest $request)  //使用剛剛創建的Request類
    {
        $data = $request->all();
        dd($data);
    }

但是此時出現了一個問題,就是無論怎么樣,都不會提示報錯信息,而只是不合乎要求就返回首頁

這時我們可以重寫FormRequest這個類的方法

例如:創建一個RequestController類繼承FormRequest並重寫其中的方法

//1.在這里可以重新定義一個requestController類,,
//2.然后讓他繼承 FormRequest,
//3.最后重寫FormRequest這個基類的failedvalidation方法。另一種方法就是直接到FormRequeste類中將該方法進行更改也可以
class RequestController extends FormRequest { protected function failedValidation(Validator $validator) { $error= $validator->errors()->all(); throw new HttpResponseException(response()->json(['msg'=>'error','code'=>'500','data'=>$error[0]], 500)); } } 這樣當你的參數不符合要求時就可以返回相對應的錯誤信息了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM