Laravel サーバサイド

[入門者向け]5分でわかるLaravelでフォームのバリデーションをする方法

どうも、シローです。

普段はサーバサイドやフロントサイドの開発をしております。

今回はLaravelのフォームのバリデーションをする方法をご紹介します。

この記事の対象者

  • Laravelを触り始めた人
  • Laravelのフォーム送信データをバリデーションしたい人

バリデーションの基本

コントローラクラスにはValidateRequestsというトレイトが組み込まれているため、$this->validate($request, バリデーションルール)でリクエストを検証することができます。

コントローラ側

コントローラ側でリクエストをバリデーションするにはこのようにします。

$validate_ruleではそれぞれのフォーム要素のバリデーションルールを定義しています。

これを$this->validate()メソッドに入れて実行することでリクエストデータを検証します。

バリデーションルールの詳細は公式を参考にしてみてください。(https://laravel.com/docs/10.x/validation)

ビュー側

バリデーションでエラーになった場合にビューで表示する部分は次のように実装します。

@if (count($errors) > 0) ~ @endifまでがエラーを表示している部分です。

バリデーションエラーは$errorsという変数に格納されています。

実際にバリデーションエラーは画像のように表示されます。

フォーム送信前

 

バリデーションエラー表示

前回送ったフォームの情報をそのまま表示させたい

ただこのままでは、送ったフォームの情報がリセットされてしまうので、入力した情報のどこが間違っているのかがわかりづらいです。

そのため、前回送ったフォーム情報をバリデーションエラー後にも表示させます。

ビューのフォームにvalue="{{old(フォーム要素)}}"を追加します。

before

after

これでフォーム送信した内容をバリデーションエラー後にも表示されます。

エラーメッセージをフォームごとに表示させたい

次にエラーメッセージをフォーム要素ごとに表示させます。

エラーの情報は$errors変数に格納されており、このデータはコレクション型であるので次のような書き方でエラーがある場合は表示させることができます。

エラーメッセージがフォームのすぐ下に表示されるようになります。

おわり

いかがだったでしょうか?

今回はフォームのバリデーションを行う方法についてご紹介しました。

バリデーションの仕組みを理解しリクエストを正しく処理するのに本記事が少しでも参考になれれば幸いです。

-Laravel, サーバサイド

© 2024 Shiro's secret base