ユーザー登録時はエラーメッセージを表示させる
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変数を使えます。
$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の値に、連想配列で項目名とその別名を定義することができます。
この別名を日本語にすることで、バリデーションエラーメッセージでの項目名を日本語化できます。
改めて、エラーになる条件を満たすような内容でユーザー登録をしてみてください。
以上です