Laravel でフラッシュメッセージを表示する方法

こんにちはー!むちょこです。

今回は Laravel でフラッシュメッセージを表示する方法をご紹介します🙌

とても簡単なのでぜひご活用ください!

フラッシュメッセージとは

フラッシュメッセージとは、そのリクエストの間だけ表示される一時的なメッセージのことです。

例えば、以下の動画のようにエラーメッセージを表示したり、処理が完了したことをお知らせするときなどに使われます。

ここでは、中でもよくあるパターンのリダイレクト先にフラッシュメッセージを表示する方法をご紹介します。

動作する Laravel のバージョン

Laravel 5.3 ~ 最新の Laravel 8.x まで、全く同じ書き方で動作します。

書き方

書き方はとてもシンプルです。

コントローラに以下のようなリダイレクトさせるコードがあったとします。

app/Http/Controllers/XxxController.php

    public function confirm()
    {
        return view('auth/delete/confirm');
    }
    
    public function delete()
    {
        return redirect('/delete/confirm');
    }

リダイレクト先にフラッシュメッセージのデータを渡すには、この redirect() メソッドからアロー演算子で with() メソッドを繋ぐだけです。

with() メソッドの第1引数にキー、第2引数に値を入れます。

app/Http/Controllers/XxxController.php
    public function delete()
    {
        return redirect('/delete/confirm')->with('message', 'パスワードが違います');
    }

これでコントローラの準備ができました。

データはセッションに保存されるので、 View で表示するときは session() を使って書きます。

resources/views/auth/delete/confirm.blade.php
@if (session('message'))
    <div class="alert alert-danger">
        {{ session('message') }}
    </div>
@endif

これで完成です✨

もっとよく知りたい方は、公式ドキュメントやその日本語訳をご覧ください:)

フラッシュメッセージが表示されないときは

上記のように書いてもフラッシュメッセージが表示されない場合、 view のキャッシュが残っている可能性があります。以下のコマンドを実行して、view のキャッシュをクリアしてみてください。

コマンド
$ php artisan view:clear