前提
phpもlaravelも初めて触っています。
laravelでログイン機能を実装している最中なのですが、ログインに失敗した場合のエラー表示をどうすればできるのかが、全く見当がつかないでいます。
実現したいこと
ユーザーIDが未入力だったときのエラー表示。
パスワードが未入力だったときのエラー表示。
ユーザーIDが見つからなかったときのエラー表示。
パスワードが不一致だったときのエラー表示。
その他の原因によるエラー表示。
エラー検出をするタイミングはController.phpの中だというのはわかったのですが、どういう処理を書けばもとのログイン画面にエラー表示させることができるのか、調べる単語が悪いのか情報が出てこないので、教えていただきたいです。
AccountController.php
1<?php 2 3namespace App\Http\Controllers; 4 5use App\Models\Account; 6use App\Http\Requests\AccountRequest; 7use App\Http\Requests\LoginRequest; 8use Exception; 9use Illuminate\Database\Eloquent\ModelNotFoundException; 10 11class AccountController extends Controller { 12 13 public function login() { 14 $account = new Account(); 15 return view('account/login', compact('account')); 16 } 17 18 public function check(LoginRequest $request) { 19 // 追加すること 20 // ユーザー名が違うときのエラー 21 // パスワードが違うときのエラー 22 // ユーザー名とパスワードが一致したときのログイン処理 23 $account = Account::where('name', $request->name)->firstOrFail(); 24 try { 25 $account = Account::where('name', $request->name)->firstOrFail(); 26 if ($account->password != $request->password) 27 throw new Exception(); 28 } catch (ModelNotFoundException $e) { 29 // 例外時の処理 30 } 31 32 return redirect("/account"); 33 } 34(略) 35} 36
login.blade.php
1@extends('account/layout') 2@section('content') 3 <div class="container ops-main"> 4 <div class="row"> 5 <div class="col-md-12"> 6 <h3 class="ops-title">ログイン</h3> 7 </div> 8 </div> 9 <div class="row"> 10 <div class="col-md-8 col-md-offset-1"> 11 @include('account/message') 12 <form action="/account/check" method="post"> 13 <input type="hidden" name="_token" value="{{ csrf_token() }}"> 14 <div class="form-group"> 15 <label for="name">ユーザー名</label> 16 <input type="text" class="form-control" name="name" value="{{ $account->name }}"> 17 </div> 18 <div class="form-group"> 19 <label for="password">パスワード</label> 20 <input type="text" class="form-control" name="password" value="{{ $account->password }}"> 21 </div> 22 <button type="submit" class="btn btn-default">ログイン</button> 23 <a href="/account">戻る</a> 24 </form> 25 </div> 26 </div> 27 </div> 28@endsection 29
補足情報(FW/ツールのバージョンなど)
php 8.1.6
Laravel 9.16.0
MySQL 8.0.29
回答1件
あなたの回答
tips
プレビュー