Featured image of post Day 26. Validation-2 Request 讓 Controller 更乾淨

Day 26. Validation-2 Request 讓 Controller 更乾淨

資源

Laravel7 30天: 目錄
專案連結: github - laravel7 之 30 天分享

前言

專案連結: github - laravel7 之 30 天分享

上一篇: Day 25. Validation

上篇我們聊了 驗證, 接著我們來說我平常使用驗證的方法,

主要

今天範例的驗證欄位比較少,所以可能比較沒感覺,
平常驗證欄位只要多 controller 的頁面就會變很肥,
所以驗證可以搬到其他物件去做,
讓 controller 乾淨一點

設定 Request

文件

執行指令

1
php artisan make:request TaskRequest

這樣就會在 app/Http/Requests 看到你產生的檔案 TaskRequest.php
可以把原本的驗證項目放進去 rules() 的 function 了
檔案: app/Http/Requests/TaskRequest.php

規則設定

1
2
3
4
5
6
    public function rules()
    {
        return [
            'title' => 'required'
        ];
    }

開關

另外我們可以把 authorize() 設定成 true

1
2
3
4
    public function authorize()
    {
        return true;
    }

自定義錯誤訊息

錯誤訊息可以放在 messages()
這個 function 是沒有預設產生的,要自己加上去

1
2
3
4
5
6
    public function messages()
    {
        return [
            'title.required' => '標題欄位是必填的'
        ];
    }

設定 controller

把原本 $request 注入 Request 改成剛剛建立的 TaskRequest

1
2
3
4
5
6
7
8
    public function store(TaskRequest $request)
    {
        Auth::user()->tasks()->create([
            'title' => $request->title
        ]);
        
        return redirect()->route('tasks.index');   
    }

這樣就可以了

DEMO

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy