はじめに
DB登録完了時に「登録完了しました!」みたいなポップアップがあると嬉しいですよね。
これを実現するためにLaravelにはフラッシュメッセージという機能があります。
フラッシュメッセージを使うと画面リロード時には表示されなかったりと便利です。
ただ、ブラウザバックの時は表示されちゃうんですよね。
なのでLaravelのフラッシュメッセージをブラウザバックで出ないようにする方法をメモします。
やり方は単純で、ブラウザのセッションストレージにフラグを用意するだけです。
コントローラー
hogeController.php
1
| return redirect("/hoge")->with('is_after_complete', '完了しました');
|
ビュー
hoge.brade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <!DOCTYPE html> <html lang="ja"> <head> </head> <body> </body> </html>
<script type="text/javascript"> const is_after_complete = "{{ Session::get('is_after_complete') }}"; if (is_after_complete) { if (sessionStorage.getItem('is_after_complete') != "1") { alert(is_after_complete); sessionStorage.setItem('is_after_complete', "1"); } }
$('form').submit(function() { sessionStorage.setItem('is_after_complete', "0"); }) </script>
|
おわりに
需要高いはずなのでLaravel標準機能にありそうだけど探しても見つからなかった、、なぜだ、、
参考
Laravel:フラッシュメッセージを表示する