我使用Laracasts Flash包向用户显示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
仍然存在,但闪烁信息已消失。即使我试着用Session::flash();
自己设置它们
知道该怎么办吗?
我找到了答案:Taylor Otwell对路由服务提供商进行了一些更改。现在,每条路由都默认应用了web中间件。再次分配它,就像我在这次更新之前所做的那样(23。2016年3月)将丢弃闪光值。
因此:删除所有手动web中间件分配。那就行了。
孤独是flash消息消失的一个原因,因为它必须有多个重定向,所以flash中的数据会被擦除。
你能试着这样var_dump吗,只有闪烁的消息:
设置:
Session::flash('success', 'saved');
测试:
var_dump(Session::get('success'));