Laravelの配列(Array)のValidationの項目名に行を表示する。
配列のバリデーションでメッセージを表示する場合に以下のように名前を割り当てていただけど。
public function attributes()
{
return [
'stock.*.jan' => 'JANコード',
'stock.*.grade_id' => '商品グレード',
'stock.*.location_id' => '場所',
'stock.*.note' => 'メモ',
];
}
複数行でえらーだと以下のようにバグっぽくなってしまう&どこかよくわかんなくなるので、行数をどうにかいれられないかあと
・このJANコードの値は既に存在しています
・このJANコードの値は既に存在しています
・このJANコードの値は既に存在しています
・このJANコードの値は既に存在しています
MessageBag($erros)を配列にtoArray()してKeyを見て強引に行数をいれる
もう少しスマートにできないかどうか。
<div class="alert alert-danger">
<ul>
@foreach( $errors->toArray() as $key => $errors)
@foreach( $errors as $error)
@if(preg_match('/(\.)([\d]+)(\.)/',$key,$matches))
<li>{{ sprintf('%s(%s行目)',$error,intval($matches[2])+1) }}</li>
@else
<li>{{ $error }}</li>
@endif
@endforeach
@endforeach
</ul>
</div>