Requestコントローラのauthorizeメソッドとrulesメソッド
- 2022.01.06
- Laravel
- form validation, Laravel, validation
Formのバリデーションを管理するのに便利なRequestコントローラなるものがある。
今回はそれを扱う。
Requestコントローラ
以下のartisanコマンドを実行すると、form requestを作成することが出来る。
1 |
php artisan make:request StorePostRequest |
このコマンドを実行すると、StorePostRequest.phpファイルがapp/Http/Requestsディレクトリに作成される。
※app/Http/Requestsディレクトリがない場合は、make:requestを実行した時点で自動的に生成してくれる。
このRequest.phpファイルには、あらかじめauthorizeメソッドとrulesメソッドが用意されている。
先に説明だけすると、authorizeメソッドはリクエストを送ったユーザーがリクエストを実行する権利を持っているかを判断して、rulesメソッドはデータに適用する検証ルールを返す。
authrizeメソッド
どんなユーザーがリクエストを実行できるかを判断する。
デフォルトではreturn falseのみ書かれていて、誰もリクエストできない状態になっている。
ここをreturn trueにしたり、他の処理を加えて、誰ならリクエストしていいかを制御できる。
rulesメソッド
rulesメソッドではルールの配列を返す必要がある。今までcontrollerに書いていたバリデーションをこのRequestコントローラに別で書くことができる。
使い方
これらの使い方は、バリデーションが必要なリクエストがきた時に引数に加える。
以下がサンプル。
1 2 3 4 5 6 7 |
use App\Http\Requests\StorePostRequest; public function store(StorePostRequest $request) { // ここに処理を書く。 // 引数にStorePostRequestを書いてるから、ここに処理が走ってる時点でバリデーションをクリアしてる } |
ちなみに、これらのバリデーションにひっかかったときは、controllerは自動的に前の画面に遷移してくれるから便利。
他のページに遷移させたいときはredirect()を使って、別途処理を書く必要がある。
またmessagesメソッドを加えて、エラーのときのフラッシュの文言を追加することが出来る。
結論、めちゃ便利。
-
前の記事
Laravelのroutesのas、prefix、namespaceについて 2021.12.22
-
次の記事
macOSでLaravel Sailをインストールする方法 2022.02.08