やりたいこと
新規登録ページで、
バリデーションエラーメッセージのデフォルトを変更させたい。
ビフォーアフター例
新規登録画面
↓ 編集前
↓ 編集後
⚠️ 最初に注意点
以下4点を元に実装していく。
✅ ラベル(パスワード)そのまま使う(=ラベル名は変更しない)
✅ 新規登録画面で
✅ エラー文を共通管理(langファイルだけでやる)
✅ つまり、コントローラー側では何もしない
✅ 手順
① /lang/ja/validation.php を開く
ファイルパス例👇
/lang/ja/validation.php
このファイルが、 Laravel でバリデーションエラーメッセージを共通管理する場所!
② custom セクションにフィールド名別にエラーを書く
具体的には、customキーの中にこう追加👇
/lang/ja/validation.php
'custom' => [
'password' => [
'required' => 'パスワードを入力してください。',
'confirmed' => 'パスワードとパスワード(再確認)が一致していません。',
'min' => 'パスワードは8文字以上で指定してください。',
],
'password_confirmation' => [
'required' => 'パスワード(再確認)を入力してください。',
],
],
ここでポイント
項目 | 内容 |
---|---|
name属性 | そのまま(password, password_confirmation) |
ラベル表示 | 「パスワード」「パスワード(再確認)」そのまま |
コントローラー側 | 特にエラーメッセージを指定しないでOK! |
③ コントローラーのバリデーションは普通でいい
例えば、新規登録処理(たぶんRegisteredUserController)のバリデーションは
普通にこれでOK👇
/Http/Controllers/Auth/RegisteredUserController.php
$request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'confirmed', 'min:8'],
]);
メッセージ指定は一切不要!
→ 自動的にlang/ja/validation.phpのカスタムメッセージが使われる!
④ ゴール
関連