我使用Laracasts Flash包向用户显示flash消息。但问题是:一次重定向后闪存值消失了。我用Session::set();
设置的值仍然存在。我在每个控制器上使用Web中间件,它甚至包括StartSession
类。
重定向后,即使重定向->withInput
也会消失。
这是我的控制人员:
public function update(Request $request) {
$profile = Auth::user()->profile;
$validator = Validator::make($request->all(), [
'email' => ['email', 'unique:profiles,email,' . $profile->id, 'max:255'],
]);
if($validator->fails()) {
var_dump("failed");
return redirect()->back()->withInput($request->input())->withErrors($validator);
}
$profile->update($request->input());
$profile->save();
Flash::success('saved');
\Session::set('test', 'testvalue');
return redirect()->route('profile.edit');
}
这是我尝试获取值的方法:
public function edit() {
$account = Auth::user();
var_dump(\Session::all());
return view('profile.edit', [
'account' => $account,
'profile' => $account->profile,
]);
}
testvalue
仍然存在但Flash消息已消失。即使我尝试使用Session::flash();
知道该怎么做?
答案 0 :(得分:2)
我找到了答案:Taylor Otwell在路线服务提供商处做了一些改变。现在每个路由都默认应用了Web中间件。在此更新(2016年3月23日)之前再次分配它将丢弃闪存值。
所以:删除所有手动Web中间件分配。然后它会工作。
答案 1 :(得分:0)
闪存消息消失的原因很孤单,这是因为它必须有多个重定向,因此闪存中的数据将被删除。
你能尝试像这样的var_dump,只有flash消息:
设置:
Session::flash('success', 'saved');
测试:
var_dump(Session::get('success'));