0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-08-29

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

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

〇〇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番いいと思う方法で実装してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?