【Laravel】session(セッション)内のデータをFormRequestでバリデーション

プログラミング

 Laravelには、受信データのバリデーションするための手段のひとつに、Requestクラスを拡張したFormRequestクラスがあります。

 FormRequestを使ってバリデーションを行うと、コントローラーのソースコードをシンプルに記述できる便利なものですが、バリデーションできるのはPOSTのリクエストボディとGETのクエリパラメータのみです。
しかしコントローラーに渡されるデータは、POSTのリクエストボディとGETのクエリパラメータだけでなく、session(セッション)データやファイルだったりと多岐にわたります。

  session(セッション)データをバリデーションすることはできるのでしょうか?

 できます!!

 具体的には、FormRequestクラスの validationData()メソッドを拡張します。

FormRequestクラスの validationData()メソッドは、以下のようにall()メソッドでバリデーションデータの取り出しを行っています。

    /**
     * Get data to be validated from the request.
     *
     * @return array
     */
    public function validationData()
    {
        return $this->all();
    }

したがって、バリデーションデータにsession(セッション)データ を追加するためには、次のように validationData()メソッドを拡張すればよいことがわかります。

    public function validationData()
    {
        return array_merge(
            $this->all(),
            $this->session()->all()
        );
    }


参考になればうれしいです。

コメント

タイトルとURLをコピーしました