Laravelのバリデーションの方法【現役エンジニアが解説】

PROGRAM

今回は、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属性の値’)}}で入力値を出力することができます。