セッションとは
HTTPはステートレスなプロトコルです。つまり、リクエストをまたいでユーザーの情報を保持する仕組みがHTTP自体にはありません。 Laravelのセッション機能は、複数のリクエストにわたってユーザーのデータを保持する手段を提供します。 ログイン状態、カート内の商品、フォーム入力中のデータなど、リクエストをまたいで保持したい情報をセッションに保存します。セッションドライバの設定
セッションの設定はconfig/session.php に記述されています。
SESSION_DRIVER 環境変数(.env ファイル)でドライバを切り替えられます。
Laravelのデフォルトプロジェクトでは
database ドライバが設定されています。database ドライバを使う場合は sessions テーブルが必要ですが、デフォルトのマイグレーションに含まれているのでそのまま使えます。セッションへのアクセス方法
セッションにアクセスするには、Request インスタンスのメソッドを使う方法と、グローバルヘルパー session() を使う方法の2つがあります。
Requestインスタンスを使う方法
コントローラーのメソッドにRequest をタイプヒントとして受け取り、$request->session() でセッションにアクセスします。
グローバルヘルパー session() を使う方法
session() ヘルパー関数はコントローラーやビューなど、どこからでも呼び出せます。
セッションの操作
データの取得
データの存在チェック
has と exists の違いに注意してください。
データの保存
データの削除
フラッシュデータ
フラッシュデータは次のリクエストだけ有効なセッションデータです。 フォームの送信完了メッセージやエラーメッセージなど、一度だけ表示したい情報に使います。flash() でデータを保存する
フラッシュデータを延長する
Bladeでフラッシュメッセージを表示する
実用例:フォーム送信後のメッセージ表示
フォームを送信したあと、成功メッセージをセッションに保存してリダイレクトし、次のページで表示するのはWebアプリの定番パターンです。1
ルートの定義
2
コントローラーの実装
フォーム送信を受け付ける
store メソッドで、保存後に成功メッセージを付けてリダイレクトします。redirect()->with('success', '...') はリダイレクト先へフラッシュデータを渡すショートカットです。3
レイアウトでメッセージを表示する
resources/views/layouts/app.blade.php にフラッシュメッセージの表示部分を追加します。4
一覧ページのビューを作成する
バリデーションエラーと組み合わせたパターン
バリデーション失敗時はback()->withErrors() と組み合わせて使います。
Laravelはバリデーション失敗時に自動でエラーをフラッシュデータとして保持するため、Bladeで $errors 変数を使えます。
次のステップ
バリデーション
フォームの入力データをバリデーションで検証する方法を確認します。