0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelでのエラーハンドリングとメッセージ表示方法に関する備忘録

Last updated at Posted at 2024-09-16

概要

Laravelを使用してアプリケーションを開発する際、エラーハンドリングとユーザー向けメッセージの表示は非常に重要です。ここでは、実際に私が写真アップロード機能を実装した際に試したエラーハンドリングとメッセージ表示の2つの方法について、備忘録としてまとめます。

1. バリデーションの実装

アップロードされたファイルやフォーム入力のバリデーションをLivewireコンポーネントで実装しました。

public function save()
{
    $this->validate([
        'photo' => 'required|image|max:10240', // 最大10MBの画像
        'site_id' => 'required|exists:sites,id',
        'part' => 'required|in:選択1,選択2,選択3',
        'photo_date' => 'required|date',
    ]);

    // 省略: 画像のリサイズと保存処理
    session()->flash('message', '写真がアップロードされました。');
    $this->reset(['photo', 'site_id', 'part', 'photo_date']);
}

ポイント: validate() メソッドを使用して、ユーザーの入力が正しいかをチェックしています。バリデーションエラーが発生した場合、自動的にエラーメッセージが表示されます。

2. 成功メッセージの表示方法

パターン1: 閉じるボタン付きのメッセージ

保存処理が成功した場合、ユーザーに通知するためのメッセージを表示するようにしました。メッセージには閉じるボタンを追加しています。

@if (session()->has('message'))
    <div class="alert alert-success alert-dismissible fade show" role="alert">
        {{ session('message') }}
        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
    </div>
@endif

備忘ポイント: session()->flash() を使って、一時的なメッセージを設定し、Bladeテンプレート内で表示します。Bootstrapの alert-dismissible クラスを使うことで、メッセージに「閉じる」ボタンを追加し、ユーザーが自身のタイミングでメッセージを閉じることができます。

パターン2: 入力フォームの下にエラーメッセージを表示

エラーメッセージをユーザーが入力したフォームの下に直接表示することで、どのフィールドに問題があったかを明示します。

<input type="text" name="photo_date" class="form-control" />
@error('photo_date')
    <small class="text-danger">{{ $message }}</small>
@enderror

備忘ポイント: エラーメッセージを特定の入力フィールドの下に表示することで、ユーザーがエラーの原因をすぐに理解できるようにしています。@error ディレクティブを使用すると、特定のフィールドに関連するエラーメッセージを簡単に表示できます。

3. 実装時の工夫点

  • パターン1: ユーザーの操作性を考慮

    • 閉じるボタンを設置することで、ユーザーがメッセージの表示を自身で制御できるようにしました。これにより、重要な情報を見逃さないようにできます。
  • パターン2: エラーメッセージの明確な表示

    • エラーの発生箇所が具体的に分かるようにすることで、ユーザーが修正すべきフィールドを迅速に特定できるようにしています。

結論

エラーハンドリングとメッセージ表示の方法には様々なパターンがあります。今回は、ユーザーの利便性を考慮して、閉じるボタン付きメッセージと入力フォームの下にエラーメッセージを表示する2つのパターンを試してみました。いずれの方法も、それぞれのシチュエーションで効果的です。備忘録として記録しておき、今後の開発に役立てていきます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?