Laravel – セッション

セッションの操作

セッションの操作には、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なら初訪問の旨を、そうでなければ訪問回数を表示
  • カウンターをクリアするためのボタンを表示

設定・変更アクション

コントローラーに以下のアクションを準備し、ルーティング設定する。

  • 'count'キーのセッションデータの値を取得して$countに代入
    • countというキーのセッションデータがなければ値0で作成して、その値を$countに代入
  • $countの値をインクリメント
  • $countの値を渡してビューをレンダリング

削除アクション

forget('キー')
キーに対応するセッションデータを削除する。
flush()
全てのセッションデータを削除する。

フォームのカウンタークリアボタンが押されたときのアクションを準備し、ルーティングを設定する。

  • 'count'キーのセッションデータを削除する
  • 削除した旨を画面に直接表示する

実行結果

  • 最初にアクセスすると、「初めまして」と表示
  • リロードすると「2回目のアクセスです」と表示
  • その後リロードするたびに回数が1つずつ増加
  • カウンタークリアボタンを押すと、「セッションデータを削除しました」と表示
  • ブラウザーの戻るボタンを押すと元の画面に戻り、「初めまして」と表示

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です