LoginSignup
0
0

More than 3 years have passed since last update.

Laravel バリデーションメッセージ日本語化 attribute書くのめんどくさい人向け

Posted at

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を毎回書くので疲弊するのは避けられる。

メモがてら

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