【初心者向け】バリデーションについて〜Laravel〜


今回は、バリデーションの概要と設定方法、エラーメッセージの表示方法について説明します。

バリデーションとは

バリデーションとは、ユーザーが入力した情報がその仕様や文法などに照らして適切な形式で記述されているかをチェックするための仕組みです。
たとえば、数字で入力してもらいたい年齢欄に名前を漢字で入力されたらサービスの提供を適切に行えなくなってしまいますよね。
それを防ぐためにバリデーションを利用します。

バリデーションの設定方法

コントローラーのアクション内に以下のように記述すれば、バリデーションを設定することができます。

〇〇Controller.php
$rules([
    '連想キー(カラム名)' => 'バリデーションルール',
]);
$this->validate($request, $rules);

複数のバリデーションルールを設定したいときは、「|」を使って繋げて記述します(例:'required | max:500')。

バリデーションは、送信された情報が要求した形式に合致していなかったらフォーム画面が再表示される仕様になっているため、このままでは、ユーザーはフォームがちゃんと送信できたのか、今の送信は何がだめだったのかが分かりません。
そこで、ユーザーにも分かるようにエラーメッセージを表示し、再入力しやすいように入力した値はフィールドに残してあげます。

エラーメッセージの表示方法

フォームを用意したテンプレートを以下のように修正していきます。

index.blade.php
<div>
    @error('カラム名')
    <span class="input-error">{{ $message }}</span>
    @enderror
    <input type="text" name="name" value="{{ old('カラム名') }}">
</div>

このようにすることで、カラムごとにエラーメッセージを表示してあげることができます。
また、inputタグにvalue="{{ old('カラム名') }}"を入れてあげることで、前回入力した値が再表示されるようになります。

エラーメッセージの日本語化

このままだと、エラーメッセージは英語で表示されてしまうので、日本語に変えたい人は以下の設定が必要になります(やり方は何通りかあります)。

1) config>app.php内に記述されている'locale'=>'en'を'locale'=>'ja'に修正します。
2) resources>lang内に「ja」というディレクトリを作成し、その中にvalidation.phpファイルを作成します。
3) resources>lang/en>validation.phpの中身を2)で作ったvalidation.phpにコピペします。
4) ja>validation.php内の該当するバリデーションルールのThe以降の部分を日本語に書き換えます。

以上で、自分が表示させたい日本語のエラーメッセージが表示されるようになります。
別のやり方は調べたらいろいろ出てくると思うので、ググって自分が1番いいと思う方法で実装してみてください。