Laravel でリダイレクトを行う時、Flashメッセージをセッションに載せてリダイレクト先のページで表示したい時。
サンプル
1 2 3 4 5 |
Route::post('/update', function (Request $request) { // return redirect('/')->with('message', 'まだ作ってないよ!'); }); |
Note
ridirect($to)->with($key, $val)
はsession($to)->flash($key, $value);
と等価。
上記例は
1 2 3 4 5 6 7 |
Route::get('/update', function (Request $request) { // session()->flash('message', 'まだ作ってないよ!'); return redirect('/'); }); |
の省略と言える。
flash
やwith
の引数を連想配列にして複数指定可。
また、前の画面(=リファラ)にメッセージ付きでリダイレクトする場合は同様に
1 |
return back()->with('message', 'まだ作ってないよ!'); |
のようにする。
ヘルパー便利。
RedirectResponse
にはflash
をセットするwith
のほかに、Cookie
をセットするwithCookie
なんというメソッドも用意されてる。
リダイレクト先での表示
Viewテンプレートのどっかでメッセージを表示できるように仕込んでおくとか。右上とかに通知表示できる仕組み仕込んでおくのもいいのかも。
1 2 3 4 5 |
@if(session()->has('message')) <div class="alert alert-info mb-3"> {{session('message')}} </div> @endif |