概要
フォーム入力のバリデーションチェックを行い、入力内容が不正であった場合に、エラーメッセージを表示させていきます。
実践
コントローラー
public function receive(Request $request){
$request->validate([
'name' => 'required|max:32',
'age' => 'required|numeric'
]);
return view('receive');
}
テンプレート
<html>
<body>
@if ($errors->any())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<form method="POST" action="/receive">
@csrf
<table>
<tr>
<td>名前:</td>
<td><input type="text" name="name" /></td>
</th>
<tr>
<td>年齢:</td>
<td><input type="text" name="age" /></td>
</th>
<tr>
<td></td>
<td><input type="submit" name="submit" value="送信" /></td>
</tr>
</table>
</body>
</html>
実行結果
送信内容
送信結果
解説
バリデーションルールの設定
$request->validate([
'name' => 'required|max:32',
'age' => 'required|numeric'
]);
フォームのname属性で設定したname, ageの入力内容に対して、入力チェックを行い、不正であれば、自動的に入力フォームのページに戻す処理を行っています。
requiredは必須チェック、max:32は文字数最大チェック、numericは整数チェックをしています。
Laravelには、これら以外にも多くのルールが定義されていますが、自分でルールを作ることもできます。
不正だった場合、エラーデータをセッション保存して、入力フォームの画面に自動的に戻ります。
エラーメッセージの表示
@if ($errors->any())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
$errors変数は、バリデーションエラーが発生すると、ミドルウェアによって自動的に定義されます。
$errors->any()で、エラーが存在するかチェックし、allメソッドでエラーメッセージの配列を呼び出して、表示させることができます。