参考図書
バリデーション機能はFormRequestに用意されているvalidate
メソッドを使ってバリデーションが行われる。
validateはRequestインスタンスと検証ルールの引数を渡すことで自動的にフォームの値のチェックを行い問題があればGETのページにリダイレクトする。
例)コントローラでバリデーションを行う
public function post(Request $request){
$validate_rule = [...]
$this->validate($request, $validate_rule);
}
これは便利だが、場合によってはエラーがあったときにフォームページにリダイレクトせずに別の処理を行わせたい場合もある。
またフォーム以外の値でバリデーションチェックを行いたい場合もある。
その場合、バリデータは独自に用意して処理することも可能。
LaravelではValidator
というクラスとして用意されている。
use Validator;
public function post(Request $request){
$validator = Validator::make($request->all(),[
...バリデーションルール
]);
if($validator->fails()){
return redirect('/hello')
->withErrors($validator)
->withInput();
}
}
バリデータはValidatorインスタンスをmakeメソッドで作成することで使える。
第一引数には値の配列、第2引数にはルールの配列。
failsはValidatorクラスにあるメソッド。バリデーションチェックに失敗したらtrue。
成功パターンはpasses
メソッドがある。
redirectで指定のパスにリダイレクト。
withErrors($validator)
でエラーメッセージをリダイレクト先で引き継げる。
withInput
はフォームの値を引き継げる。