LoginSignup
1
0

More than 3 years have passed since last update.

【Laravel】同ページに2つのフォームとバリデーションエラーメッセージの表示欄がそれぞれある場合、エラーメッセージをそれぞれ分ける

Posted at

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

バリデーションに設定した値を何かしら参照してあげればいけると思う。

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