いくつかのテスト目的のために、セッションにデータを保存したいです。私もコントローラーでセッションコードを書きました。しかし、console.log-> resources-> sessionでは、保存した値が見つかりませんでした。誰かが私が私のコントローラーで行った間違いを見つけるのを手伝ってください。
ここに私のコントローラーがあります:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Department;
use App\Http\Requests;
use Cookie;
use Tracker;
use Session;
public function postdepartmentSave(Request $request)
{
$this->validate($request,[
'code' => 'required|min:2|max:7|unique:departments',
'name' => 'required|unique:departments',
]);
$department = new Department();
$department->code = $request->Input(['code']);
$department->name = $request->Input(['name']);
$name= $department->name;
Session::put('name', $name);
dd($name);
$department->save();
return redirect('departmentSavePage');
}
データを保存するには、次を使用できます。
Session::put('variableName', $value);
グローバルヘルパーを使用する別の方法もあります。
session(['variableName' => $value]);
変数を取得するには、次を使用します。
Session::get('variableName');
コーディングを間違えていません。問題は、サーバー側のセッションとHTML5のsessionStorageの間で少し混乱していることです。
Chrome Developer Toolsの_Resources->Session Storage
_ビューは、HTML5 sessionStorageオブジェクトに保存されている情報のみを表示します。これは、クライアント側のJavaScriptを介してアクセスされるクライアント側のセッション情報です。どのタイプのサーバー側セッション情報とも完全に分離されます。
たとえば、javascriptコンソールでsessionStorage.setItem('key', 'value');
を実行すると、_Resources->Session Storage
_ビューにデータが表示されます。
PHP/Laravelコードはサーバー側セッションを処理しています。この情報は、クライアント側のツールからアクセスするためのものではないため、どのタイプの開発者ツールビューにも表示されません。デフォルトでは、Laravel=はファイルベースのセッションストレージを使用します。つまり、セッション情報はサーバー上のファイル(_storage/framework/sessions
_)に保存されます。Cookieを使用するようにセッションストレージを変更しても、クライアント側がデータを読み取れないように、セッション情報は暗号化されますこれはセキュリティのためです。
Laravelセッションはこちら について詳しく読むことができます。
HTML5 sessionStorage here の詳細をご覧ください。