2018/09/06

[Laravel] Form Request

Form Request 建立時預設會產生

// 授權可否使用此Request
public function authorize();

// 驗證規則
public function rules();


另外還有兩個方法可以設定

// 錯誤文字的回應格式,與 lang 下的 validation 合併
public function messages() : array;

// 欄位的顯示名稱,與 lang 下的 validation.attributes 合併
public function attributes() : array;


在 Controller 可以直接使用 validated 拿到 rules 定義的資料

public function update(FormRequest $request)
{
$data = $request->validated();
}


以上的設定方式與以下等效

$data = $request->validate($rules, $messages, $attributes);


不過這樣會讓 Controller 變大,而且沒遵守 SRP

ps.
illuminate\Http\Request::validate 這個 method 是 另外用 Macro 加進去的,
api是找不到的。

SourceCode:
https://github.com/laravel/framework/blob/5.5/src/Illuminate/Foundation/Providers/FoundationServiceProvider.php#L36

沒有留言:

張貼留言