Laravel 5.2:重定向后会话中的Flash值消失



我使用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'));

最新更新