sessionについて
- ざっくりで言うとデータを一時的に保存して、他のページでもデータを共有可能な仕組み
実際にsessionを使ってみる
- 今回は何かの申請処理後に表示される画面が何度も同じURLでアクセス出来ないように、申請処理があった場合のみ表示されるような用途で使ってみます
- 申請処理時にsessionを保存
- sessionがある時のみ申請完了画面を表示してそのsessionを削除する
- sessionがない場合は別のページにリダイレクトさせるようにする
sessionを保存
// コントローラ
public function application(Request $request)
{
$request->session()->put('application', true);
return redirect()->route('foods.completion');
}
sessionを取得と削除
// コントローラ
public function completion(Request $request)
{
// session有無チェック、ある場合viewを表示、無い場合foods.main画面にリダイレクト
if ($request->session()->get('application') === true) {
$request->session()->forget('application');
} else {
return redirect()->route('foods.main');;
}
return view('foods.completion');
}
上記ではforget()を使ってsession「application」削除しているため、foods.completionの画面でページリロードをすると「foods.main」画面に遷移します。
今回だとcompletion()の処理を挟んだ状態つまり、session「application」が無いとviewが表示されない設計にしてあります