タグ: validation

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

    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メソッドを加えて、エラーのときのフラッシュの文言を追加することが出来る。

    結論、めちゃ便利。