🧚‍♀️

flash()が分からなかった、セッション

2023/08/26に公開

フラッシュメッセージの表示に、なぜセッションメソッドが使われているのか分からなかった

セッション: アプリはステートレス(記憶を持たない)だけど、セッションでデータの保存ができる。

index.blade.php
View
  <div class="container">
    @if (session('feedback.success'))
    <div class="alert alert-success" role="alert">
      {{ session('feedback.success') }}
    </div>
    @endif
DeleteController.php
~~~~
     return redirect()
         ->route('tweets.index'
	 ->with('feedback.success', 'つぶやきを削除しました');
    }

セッションデータの操作方法

①Requestインスタンスを介してセッションにアクセス

ルートクロージャ(無名関数)かコントローラーメソッドでタイプヒント(型)を使って取得できる

class UserController extends Controller
{
    public function show(Request $request, $id)
    {
        $value = $request->session()->get('key');
    }

②グローバルセッションへルパ

sessionPHP関数を利用して、セッション内のデータの取得・保存
sessionへルパ関数を文字列引数で呼び出すと、セッションキーの値を返す
セッションは、配列でキーと値のペア関係

セッションにデータを保存

  • リクエストインスタンス経由
    $request->session()->put('key', 'value');
  • グローバルな"session"ヘルパ経由
    session(['key' => 'value']);

Discussion