前回は記事の削除を実装しました。記事の削除後は記事一覧にリダイレクトしたのですが、何のメッセージの表示も無く、記事が正しく削除されたのか分かりづらい感じです。今回は フラッシュメッセージを実装して、記事が正しく削除された事をユーザに伝えるようにします。
Controller
ArticlesController.php の destroy メソッドを修正します。
// app/Http/Controllers/ArticlesController.php ... class ArticlesController extends Controller { ... public function destroy($id) { $article = Article::findOrFail($id); $article->delete(); return redirect('articles')->with('message', '記事を削除しました。'); } }
redirect() 時に with() メソッドでフラッシュ情報としてメッセージを追加します。
フラッシュ情報とは次のリクエストだけで有効な一時的なセッション情報(サーバーに保存する情報)です。
View
フラッシュメッセージを表示するように layout.blade.php を修正します。
// resources/views/layout.blade.php ... <body> <div class="container py-4"> {{-- フラッシュメッセージの表示 --}} @if (session('message')) <div class="alert alert-success">{{ session('message') }}</div> @endif {{-- コンテンツの表示 --}} @yield('content') </div> </body> </html>
セッションに ‘message’ をキーに持つ情報があれば、表示するように修正しました。class=”alert alert-success” というのは Bootstrap の CSSで、この class を指定すると、正常時のアラートとして div を緑に装飾して表示してくれます。
演習
ArticlesController.php の store や update メソッドでもフラッシュメッセージを表示するよう修正してみましょう。