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

时间:2016-05-06 12:41:57

标签: php laravel session redirect laravel-5

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

设置自己

知道该怎么做?

2 个答案:

答案 0 :(得分:2)

我找到了答案:Taylor Otwell在路线服务提供商处做了一些改变。现在每个路由都默认应用了Web中间件。在此更新(2016年3月23日)之前再次分配它将丢弃闪存值。

所以:删除所有手动Web中间件分配。然后它会工作。

答案 1 :(得分:0)

闪存消息消失的原因很孤单,这是因为它必须有多个重定向,因此闪存中的数据将被删除。

你能尝试像这样的var_dump,只有flash消息:

设置:

Session::flash('success', 'saved');

测试:

var_dump(Session::get('success'));