laravelのバリデーションでattributeの設定をするのがめんどくさい
自分はFormRequestを一番使うが、基本的にバリデーションメッセージはメッセージに一貫性がなくなるから/resource/lang
にぶち込んであるメッセージに乗っかってFormRequestでの独自のメッセージはなるべく書かないようにしている。
その時にリクエストパラメーターのkeyでバリデーションメッセージが生成されれる。当たり前だが、labelなりフォームの見出しなりはリクエストに含まれてないので自分で変換してあげなきゃいけない。
一般的なやり方はFormRequestの場合、attributeメソッドに連想配列で書いて変換する方法だと思う。
modelかどっかにparam名 => ラベル
の連想配列を常に持っておけばそこから参照できる。ただ、ページごとにラベルを変えてフォームを用意すると破綻する。
自分がよくやる構成
@php
$data = ['name' => 'xxx']; // 初期値配列
$key = 'name';
$label = '名前';
@endphp
<label>{{ $label }}</label>
<input name="{{ $key }}" type="text" value="{{ old($key, $data[$key] ?? null) }}">
@error($key)
{{ str_replace(str_replace('_', ' ', Str::snake($key)), $label, $message) }}
@enderror
attributeを毎回書くので疲弊するのは避けられる。
メモがてら