こんにちはー!むちょこです。
今回は Laravel でフラッシュメッセージを表示する方法をご紹介します🙌
とても簡単なのでぜひご活用ください!
フラッシュメッセージとは
フラッシュメッセージとは、そのリクエストの間だけ表示される一時的なメッセージのことです。
例えば、以下の動画のようにエラーメッセージを表示したり、処理が完了したことをお知らせするときなどに使われます。
ここでは、中でもよくあるパターンのリダイレクト先にフラッシュメッセージを表示する方法をご紹介します。
動作する Laravel のバージョン
Laravel 5.3 ~ 最新の Laravel 8.x まで、全く同じ書き方で動作します。
書き方
書き方はとてもシンプルです。
コントローラに以下のようなリダイレクトさせるコードがあったとします。
public function confirm()
{
return view('auth/delete/confirm');
}
public function delete()
{
return redirect('/delete/confirm');
}
リダイレクト先にフラッシュメッセージのデータを渡すには、この redirect() メソッドからアロー演算子で with() メソッドを繋ぐだけです。
with() メソッドの第1引数にキー、第2引数に値を入れます。
public function delete()
{
return redirect('/delete/confirm')->with('message', 'パスワードが違います');
}
これでコントローラの準備ができました。
データはセッションに保存されるので、 View で表示するときは session() を使って書きます。
@if (session('message'))
<div class="alert alert-danger">
{{ session('message') }}
</div>
@endif
これで完成です✨
もっとよく知りたい方は、公式ドキュメントやその日本語訳をご覧ください:)
https://laravel.com/docs/6.x/redirects#redirecting-with-flashed-session-data
(日本語訳)https://readouble.com/laravel/6.x/ja/responses.html#redirecting-with-flashed-session-data
フラッシュメッセージが表示されないときは
上記のように書いてもフラッシュメッセージが表示されない場合、 view のキャッシュが残っている可能性があります。以下のコマンドを実行して、view のキャッシュをクリアしてみてください。
$ php artisan view:clear