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()
);
}
参考になればうれしいです。
コメント