在推送数据时如何提供Laravel会话持久性?

时间:2017-10-02 09:00:35

标签: php laravel laravel-5

我有一张表格,它向Laravel发送请求。 Laravel控制器通过push方法捕获请求并在会话中存储数据,例如

$basename = pathinfo($path, PATHINFO_BASENAME);

if (!$request->session()->exists('upload')) {

    $request->session()->put('upload', []);
}

$request->session()->push('upload', $basename);

var_dump($request->session()->get('upload'));

当表单向Laravel发送两个(或更多)请求时,我希望在var_dump中看到数组中的两个(或更多)值,但我只看到一个值。为什么会发生这种情况?

提前致谢!

PS。简单示例显示顺序推送工作正常,并且它创建了一个包含两个值的数组。

$request->session()->put('upload', []); 
$request->session()->push('upload', $basename); 
$request->session()->push('upload', $basename); 

var_dump($request->session()->get('upload'));

我认为原因是请求是异步的,并且Laravel在请求开始时检索会话值(当会话为空时)。每个请求在空数组中推送新值并存储它。

1 个答案:

答案 0 :(得分:2)

您只需使用keep方法

即可
  

如果您需要保留闪存数据以满足多个请求,您可以使用重新刷新方法,这将保留所有闪存数据以获取其他请求。如果您只需要保留特定的闪存数据,则可以使用keep方法

session()->keep(['uploads']);