Laravel 会话管理:存入会话数据
问题
在 Laravel 中,如何向会话写入数据?
回答
想要向会话写入数据,可以先调用 $request
实例的 session
方法返回 \Illuminate\Session\Store
实例,然后链式调用该实例的 put
方法向会话写入数据:
// 通过请求实例...
$request->session()->put('key', 'value');
// 或
$request->session()->put(['key', 'value']);
也可以使用全局辅助函数 session
,如果给该函数提供的是一个关联数组,它将执行写入操作:
session(['key' => 'value']);
如果要向一个会话数组添加新值,可以使用 push
方法。假设会话中 user.teams
是包含团队名称的数组,可以这样将一个新的值加入到数组中:
$request->session()->push('user.teams', 'developers');
如果想在会话中保存数据用于下一次请求,可以使用 flash
方法。使用这个方法保存在会话中的数据,只会保留到下一个 HTTP 请求到来之前,然后就会被删除(闪存数据)。这对短期的状态消息是适用的:
$request->session()->flash('status', 'Task was successful!');
如果需要保留闪存数据给更多请求,可以使用 reflash
方法,这会将所有的闪存数据保留给其他请求。如果只想保留特定的闪存数据,则可以使用 keep
方法,它接受一个包含欲保留闪存数据键名的数组:
$request->session()->reflash();
$request->session()->keep(['username', 'email']);