laravel5.5のバリデーションで、そこだけ個別のメッセージを表示したい時の実装
通常は、resources/lang/ja/validation.phpで日本語化しておけばOKなのだが
nameみたいに汎用性があるフィールド名の場合、一律に日本語化できない(名前、ユーザー名、ニックネーム、会社名などに色々変更したい)
そういった場合は、バリデーションする時に上書き出来る
RegisterController.phpの新規登録のバリデーション処理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
protected function validator(array $data) { $rule = [ 'name' => ['required', 'string', 'max:4'], // ニックネーム ]; // 第1引数 = $request(postデータ) // 第2引数 = バリデーション・ルール // 第3引数 = フィールド名.バリデーションルールの上書きの文字列 // 第4引数 = フィールド名の上書きの文字列 // 上書きされないものは、resources/lang/ja/validation.phpが適用される $messages = [ 'name.required' => 'ニックネームは必須ですよ~', 'name.max' => '名前は最大4文字まで、昔のドラクエか!', ]; $renames = [ 'name' => 'ニックネーム', ]; return Validator::make($data, $rule, $messages, $renames); } |