セッションの操作
セッションの操作には、session()
グローバルヘルパーを利用する方法と、、アクション引数のRequest
インスタンスを経由する方法がある。
session()
グローバルヘルパーを利用する方法:
session()->各メソッド;
Request
インスタンスを経由する方法:
$request->session()->各メソッド;
セッションデータの取得・初期化
変数 = session()->get('キー', 初期値);
変数 = $request->session()->('キー', 初期値);
変数 = $request->session()->('キー', function() { return 初期値 });
キー
に対応するセッションデータの値を変数に代入するキー
が存在しない時は、キー
と初期値
をセットしてセッションデータを追加し、その値を変数に代入する
セッションデータの保存
session()->put('キー', 値);
session(['キー' => 値]);
$request->session()->put('キー', 値);
キー
と値
をセッションデータとして保存する
セッションデータの削除
session()->forget('キー');
$request->session()->forget('キー');
キー
に対応するセッションデータを削除する
session()->flush();
$request->session()->flush();
- セッションのすべてのデータを削除する
実装例
ビュー
以下の内容を含むビューを所定の位置に準備。
$count
が1なら初訪問の旨を、そうでなければ訪問回数を表示- カウンターをクリアするためのボタンを表示
1 2 3 4 5 6 7 8 9 10 |
@if ($count === 1) <p>初めまして</p> @else <p>{{ $count }}回目のアクセスです</p> @endif <form method="post"> @csrf <input type="submit" value="カウンタークリア"> </form> |
設定・変更アクション
コントローラーに以下のアクションを準備し、ルーティング設定する。
'count'
キーのセッションデータの値を取得して$count
に代入count
というキーのセッションデータがなければ値0で作成して、その値を$count
に代入
$count
の値をインクリメント$count
の値を渡してビューをレンダリング
1 2 3 4 5 6 7 8 9 10 11 |
public function sessionTest() { $count = session()->get('count', 0); $count++; session()->put('count', $count); return view('samples.counter_sample', [ 'title' => 'セッションのサンプル', 'count' => $count, ]); } |
削除アクション
forget('キー')
- キーに対応するセッションデータを削除する。
flush()
- 全てのセッションデータを削除する。
フォームのカウンタークリアボタンが押されたときのアクションを準備し、ルーティングを設定する。
'count'
キーのセッションデータを削除する- 削除した旨を画面に直接表示する
1 2 3 4 5 |
public function deleteSession() { session()->forget('count'); return 'セッションデータを削除しました'; } |
実行結果
- 最初にアクセスすると、「初めまして」と表示
- リロードすると「2回目のアクセスです」と表示
- その後リロードするたびに回数が1つずつ増加
- カウンタークリアボタンを押すと、「セッションデータを削除しました」と表示
- ブラウザーの戻るボタンを押すと元の画面に戻り、「初めまして」と表示