我有一张表格,它向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在请求开始时检索会话值(当会话为空时)。每个请求在空数组中推送新值并存储它。
答案 0 :(得分:2)
您只需使用keep方法
即可如果您需要保留闪存数据以满足多个请求,您可以使用重新刷新方法,这将保留所有闪存数据以获取其他请求。如果您只需要保留特定的闪存数据,则可以使用keep方法
session()->keep(['uploads']);