1行で
- bladeのエラーメッセージ表示部分のifの条件を変える
概要
同ページにユーザー設定とパスワード設定がそれぞれ独立して存在するというパターンで実装する。
ひとつのsubmitで2つのformが更新されるというパターンではない。formとsubmitがそれぞれ同じページに1つずつある。
エラーメッセージ表示
通常、バリデーションによるエラーメッセージはこのような記述で書いて表示する。
edit.blade.php
@if ($errors->any())
<div class="">
<ul>
@foreach ($errors->() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
これが同ページに2つあると、例えばユーザー設定のエラーがかかると、例えばパスワード設定のform内に書いていたとしても、そちらにも表示される。逆もまた然りである。
$errors の中身を参照し、処理を分ける
edit.blade.php
{{-- ユーザー設定 --}}
@if ($errors->has('email'))
<div class="">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
{{-- パスワード設定 --}}
@if ($errors->has('password'))
<div class="">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
バリデーションに設定した値を何かしら参照してあげればいけると思う。