カテゴリ: Laravel 更新日: 2025/12/15

Laravelでセッションflashメッセージを表示する方法|初心者向け解説

Laravelでセッション情報をビューで表示する方法(flashメッセージ)
Laravelでセッション情報をビューで表示する方法(flashメッセージ)

先生と生徒の会話形式で理解しよう

生徒

「Laravelでフォーム送信後に成功メッセージを表示したいんですが、どうすればいいですか?」

先生

「それにはセッションに情報を一時的に保存するflashメッセージという仕組みを使います。簡単ですよ!」

生徒

「何をどう書けばいいんですか?」

先生

「では手順を一つずつ見ていきましょう!」

1. flashメッセージとは?

1. flashメッセージとは?
1. flashメッセージとは?

flashメッセージは、セッションに「一度だけ」保存される情報です。たとえば、フォーム送信後に「送信完了しました!」というメッセージを一度だけ表示し、その後は消えます。

「セッション」は、複数のページをまたいで一時的に情報を保存しておく仕組みです。

2. コントローラでflashメッセージを設定する方法

2. コントローラでflashメッセージを設定する方法
2. コントローラでflashメッセージを設定する方法

コントローラでデータ処理後、次のように書くとflashメッセージが設定できます:


return redirect()
  ->back()
  ->with('success', '登録が完了しました!');

このwith('success', ...)がflashメッセージをセッションに保存する部分です。

3. ビューでflashメッセージを表示する方法

3. ビューでflashメッセージを表示する方法
3. ビューでflashメッセージを表示する方法

次に、Bladeテンプレートにメッセージ表示を追加します:


@if (session('success'))
  <div class="alert alert-success">
    {{ session('success') }}
  </div>
@endif

@ifでセッションにsuccessがあるかチェックし、あればdivでメッセージを表示します。

4. エラーメッセージを表示する例

4. エラーメッセージを表示する例
4. エラーメッセージを表示する例

同様にエラー用のflashメッセージも使えます:


return redirect()
  ->back()
  ->with('error', 'エラーが発生しました');

Bladeでは次のように書きます:


@if (session('error'))
  <div class="alert alert-danger">
    {{ session('error') }}
  </div>
@endif

5. Bootstrapで見た目を整える方法

5. Bootstrapで見た目を整える方法
5. Bootstrapで見た目を整える方法

Bootstrapのalertクラスで見た目を整えられます:


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

これで緑色のメッセージが表示され、✕ボタンで閉じられるようになります。

6. flashメッセージの表示を共通化しよう

6. flashメッセージの表示を共通化しよう
6. flashメッセージの表示を共通化しよう

表示用のBladeを部分テンプレートにして@includeで呼ぶと便利です:


<!-- resources/views/partials/flash.blade.php -->
@if (session('success'))
  <div class="alert alert-success">{{ session('success') }}</div>
@endif
@if (session('error'))
  <div class="alert alert-danger">{{ session('error') }}</div>
@endif

メインのビューでは次のように@includeします:


@include('partials.flash')

これでどのページにも簡単に表示できます。

7. 注意点とベストプラクティス

7. 注意点とベストプラクティス
7. 注意点とベストプラクティス
  • flashメッセージは「一回限り」。リロードすると消えます。
  • 多言語対応する場合は、__('登録が完了しました!') のように翻訳対応できます。
  • CSSフレームワークに応じてalertクラスを変更しましょう。

まとめ

まとめ
まとめ

ここまで、Laravelでセッションを利用した flash メッセージの基本的な考え方から、 コントローラでの設定方法、Bladeテンプレートでの表示方法、Bootstrapを使った見た目の調整、 さらに部分テンプレートによる共通化までを順番に学んできました。 flashメッセージは、LaravelでWebアプリケーションを作るうえで非常に登場回数の多い仕組みです。 フォーム送信後の「登録が完了しました」「更新に成功しました」「エラーが発生しました」といった 一時的な通知をユーザーに伝えるために欠かせません。

特に重要なのは、flashメッセージが「一度だけ表示される」という点です。 通常のセッションと違い、次のリクエストで自動的に消えるため、 フォーム送信後やリダイレクト後の画面にぴったりの仕組みになっています。 Laravelでは redirect()->with() を使うだけで簡単に flash メッセージを設定できるため、 初心者の方でもすぐに実装できるのが大きな魅力です。 こうしたシンプルさは、Laravelが多くの開発者に選ばれている理由の一つでもあります。

Bladeテンプレート側では、session('キー') を使って flash メッセージの存在を確認し、 条件分岐で表示を切り替えるだけで対応できます。 これにより、サーバー側の処理と画面表示の役割がはっきり分かれ、 コードの見通しが良くなります。 また、Bootstrapの alert クラスを使えば、 成功・エラー・警告といったメッセージを色分けして表示でき、 ユーザーにとって分かりやすい画面を作ることができます。

実務レベルのLaravel開発では、flashメッセージの表示処理を毎回各ビューに書くのではなく、 部分テンプレートとして共通化するのが一般的です。 @include を使って一か所にまとめておけば、 デザイン変更やメッセージの追加・修正も簡単に行えます。 この考え方は、flashメッセージに限らず、 LaravelやBlade全体でとても重要な設計のポイントになります。 「同じ処理を何度も書かない」という意識を持つことで、 保守しやすく、読みやすいコードを書くことができるようになります。

また、flashメッセージはユーザー体験を向上させるための重要な要素です。 何が成功したのか、なぜ失敗したのかが画面上で明確に伝わることで、 ユーザーは安心して操作を続けることができます。 特にフォーム送信後に何も表示されない場合、 ユーザーは「本当に送信できたのかな?」と不安になってしまいます。 その不安を解消するためにも、flashメッセージは積極的に活用したい仕組みです。

flashメッセージ実装の基本例を振り返る

最後に、Laravelでよく使われる flash メッセージの基本的な実装例を改めて確認してみましょう。 コントローラでメッセージを設定し、Bladeで表示するという流れを理解しておくことが大切です。


return redirect()
    ->back()
    ->with('success', '登録が完了しました!');

@if (session('success'))
    <div class="alert alert-success">
        {{ session('success') }}
    </div>
@endif

このように、Laravelの flash メッセージは非常にシンプルな記述で実装できます。 まずはこの基本形をしっかり身につけ、 そのうえでBootstrapによる装飾や部分テンプレートによる共通化に挑戦してみましょう。 小さな積み重ねが、実務で通用するLaravelスキルにつながっていきます。

先生と生徒の振り返り会話

生徒

「flashメッセージって、ただの通知だと思っていましたが、 ユーザーに安心感を与える大事な役割があるんですね。」

先生

「その通りです。ユーザーは画面の反応を見て次の行動を決めます。 flashメッセージは、その判断材料を分かりやすく伝えるための仕組みなんです。」

生徒

「redirectとwithを使うだけで実装できるのは、思ったより簡単でした。」

先生

「Laravelは、よく使う処理を簡単に書けるように設計されています。 flashメッセージもその代表例ですね。」

生徒

「部分テンプレートにして共通化する考え方も勉強になりました。 これからは同じ表示を何度も書かないようにします。」

先生

「それはとても良い意識です。 flashメッセージを使いこなせるようになると、 Laravelでのフォーム処理が一段と分かりやすくなりますよ。」

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)