Requestコントローラのauthorizeメソッドとrulesメソッド

Formのバリデーションを管理するのに便利なRequestコントローラなるものがある。

今回はそれを扱う。

Requestコントローラ

以下のartisanコマンドを実行すると、form requestを作成することが出来る。

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コントローラに別で書くことができる。

使い方

これらの使い方は、バリデーションが必要なリクエストがきた時に引数に加える。

以下がサンプル。

use App\Http\Requests\StorePostRequest;

public function store(StorePostRequest $request)
{
    // ここに処理を書く。
    // 引数にStorePostRequestを書いてるから、ここに処理が走ってる時点でバリデーションをクリアしてる
}

ちなみに、これらのバリデーションにひっかかったときは、controllerは自動的に前の画面に遷移してくれるから便利。

他のページに遷移させたいときはredirect()を使って、別途処理を書く必要がある。

またmessagesメソッドを加えて、エラーのときのフラッシュの文言を追加することが出来る。

結論、めちゃ便利。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です