3
3

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 エラーメッセージを表示させよう

Posted at

ユーザー登録時はエラーメッセージを表示させる

resources/viewsディレクトリにerror_card_list.blade.phpを作成して、
以下の内容に編集します。

@if ($errors->any())
  <div class="card-text text-left alert alert-danger">
    <ul class="mb-0">
      @foreach($errors->all() as $error)
        <li>{{ $error }}</li>
      @endforeach
    </ul>
  </div>
@endif

Laravelでは、Bladeの中で$errors変数を使えます。

バリデーションエラー表示 - Laravel公式

$errors変数は、Illuminate\Support\MessageBagクラスのインスタンスであり、バリデーションエラーメッセージを配列で持っています。

以下のコードでは、MessageBagクラスのanyメソッドを使っていますが、これはエラーメッセージの有無を返します。

@if ($errors->any())

そして、エラーメッセージが1件以上ある場合は、MessageBagクラスのallメソッドで全エラーメッセージの配列を取得し、@foreachで繰り返し表示を行なっています。

@foreach($errors->all() as $error)
  <li>{{ $error }}</li>
@endforeach

バリデーションエラーメッセージの日本語化

バリデーションエラーメッセージが表示されるようになりましたが、英語です。

これを日本語で表示するようにします。

まず、laravel/resources/langディレクトリにjaディレクトリを作成し、そこにvalidation.phpを作成してください。

.
└──laravel
    └── resources
        └── lang
            └── ja
                └── validation.php

そして、validation.phpに対して、

validation.php言語ファイル - Laravel公式

の、以下が言語ファイルの内容です。と書かれているところから下のPHPコードの内容をそのままコピペしてください。

Laravelは標準では、日本語のバリデーションエラーメッセージが用意されておらず、今回は有志の方が作成した日本語ファイルを利用させてもらうことにします。

次にlaravel/config/app.phpを以下の通り編集します。

 'locale' => 'ja',

項目名の日本語化

<?php

return [
    
    // 略
    
    /*
    |--------------------------------------------------------------------------
    | カスタムバリデーション属性名
    |--------------------------------------------------------------------------
    |
    | 以下の言語行は、例えば"email"の代わりに「メールアドレス」のように、
    | 読み手にフレンドリーな表現でプレースホルダーを置き換えるために指定する
    | 言語行です。これはメッセージをよりきれいに表示するために役に立ちます。
    |
    */
    
    //==========ここから削除==========
    'attributes' => [],
    //==========ここまで削除==========

    //==========ここから追加==========
    'attributes' => [
        'name' => 'ユーザー名',
        'email' => 'メールアドレス',
        'password' => 'パスワード',
    ],
    //==========ここまで追加==========

];

上記のようにattributesの値に、連想配列で項目名とその別名を定義することができます。

この別名を日本語にすることで、バリデーションエラーメッセージでの項目名を日本語化できます。

改めて、エラーになる条件を満たすような内容でユーザー登録をしてみてください。

以上です:relaxed:

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?