実現したいこと
Laravel のログイン画面にてForm Requestを使用したバリデーションエラーを表示させたいです。
発生している問題・分からないこと
バリデーションエラーをテストしてみると、どうやらFormRequestではなくvalidation.phpで設定しているバリデーションエラーが表示されています。
該当のソースコード
LoginRequest.php
1public function rules() 2 { 3 return [ 4 'email' => ['required','string','email'], 5 'password' => ['required','min:8',], 6 ]; 7 } 8 9 public function messages() 10 { 11 return [ 12 'email.required' => 'メールアドレスを入力してください', 13 'email.email' => 'メールアドレスを入力してください', 14 'password.required' => 'パスワードを入力してください', 15 'password.min' => 'パスワードは8文字以上で入力してください', 16 ]; 17 }
FortifyServiceProvider.php
1Fortify::authenticateUsing(function ($request) { 2 $validator = Validator::make($request->all(), (new LoginRequest())->rules(), (new LoginRequest())->messages()); 3 if ($validator->fails()) { 4 return null; 5 } 6 7 if (!Auth::attempt($request->only('email', 'password'))) { 8 return null; 9 } 10 11 return Auth::user(); 12 });
login.balde.php
1<div class="login-form__group"> 2 <label class="login-form__label" for="email">メールアドレス</label> 3 <input class="login-form__input" type="email" name="email" id="email"> 4 @if (session('errors')) 5 <div class="alert alert-danger"> 6 <ul> 7 @foreach (session('errors')->all() as $error) 8 <li>{{ $error }}</li> 9 @endforeach 10 </ul> 11 </div> 12 @endif 13 14 </div> 15 16 <div class="login-form__group"> 17 <label class="login-form__label" for="password">パスワード</label> 18 <input class="login-form__input" type="password" name="password" id="password"> 19 @if (session('errors')) 20 <div class="alert alert-danger"> 21 <ul> 22 @foreach (session('errors')->all() as $error) 23 <li>{{ $error }}</li> 24 @endforeach 25 </ul> 26 </div> 27 @endif 28 </div>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
①login.blade.phpにて$errors->any() ではなくsession('errors')->all()でエラーメッセージを取得しました。
②FortifyServiceProvider.phpにredirect()->route('login')->withErrors($validator)->withInput(); を追加して、エラーをビューに渡してみました。
①、②を実行後、artisanコマンドでキャッシュのクリアを行い、テストを行いましたがやはり、validate.phpからの文言で行われております。
補足
ログイン画面のパスの設定はFortifyServiceProviderで行なっているので、本来はControllerで行うのでしょうが認証機能のこともありFortifyServiceProviderで呼び出しています。
自己解決が困難な状態なので、ご教授のほどよろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/05/18 23:56
2025/05/19 00:13
2025/05/22 12:16