Laravelのバリデーションの方法【現役エンジニアが解説】
今回は、Laravelのバリデーションの方法について、バージョン指定の仕方も含め、簡単に解説していきます。
基本的な書き方
Requestクラスのvalidateメソッドを使います。
Laravelにおいてはこのメソッドで入力値のバリデーションを簡単にできます。
$request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]);
上記のコードは、ログイン認証時の名前とメールアドレス、パスワードのバリデーションに使われているデフォルトのルールです。
エラー時の処理を変える方法
エラー時の処理を変えるにはValidatorクラスのmakeメソッドを使います。
このメソッドでは、第一引数に入力値の配列を、第二引数にルールの配列を指定します。
$validator = Validator::make($request->all(), [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); if ($validator->fails()) { // エラーの場合 return redirect() ->back() ->withErrors($validator) ->withInput(); }
上記のコードのように、Laravelのバリデーションでは、makeメソッドの後にfailsメソッドを使うことによって、自分でエラー処理を書くことができます。
フォームに戻った後のBladeでの入力値の受け取り方
バリデーションエラー時、基本的にはフォームに画面を戻すと思います。
Laravelではその際にoldというヘルパー関数を使うことで入力値を取得できます。
<input type="text" name="name" value="{{old('name')}}"> <input type="email" name="email" value="{{old('email')}}"> <input type="password" name="password" value="">
上記のように、Bladeにて、{{old(‘name属性の値’)}}で入力値を出力することができます。