【问题标题】:Laravel 5.2: Flash values in session gone after redirectLaravel 5.2:重定向后会话中的 Flash 值消失
【发布时间】:2016-09-01 13:08:46
【问题描述】:

我使用 Laracasts Flash 包向我的用户显示 Flash 消息。但是有一个问题:一次重定向后闪存值消失了。我用Session::set(); 设置的值仍然存在。我在每个控制器上使用网络中间件,它甚至包括 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();自己设置它们

知道该怎么做吗?

【问题讨论】:

  • 我认为 Flash 消息只存储用于下一个请求。之后它就会消失。如果要保留以供进一步使用,则需要将其存储在会话中。您可以通过laravel.com/docs/5.2/session了解闪信行为
  • 谢谢,但我知道 Flash 消息是如何工作的。问题:它是下一个请求,但它仍然消失了。
  • laracasts.com/series/laravel-5-from-scratch/episodes/15 - 此链接可能对您有所帮助。

标签: php laravel session redirect laravel-5


【解决方案1】:

flash消息消失的唯一原因是它必须有多个重定向,所以flash中的数据被擦除了。

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

设置:

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

测试:

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

【讨论】:

  • 它的“空”。我无法解释为什么应该有多个请求。
【解决方案2】:

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

所以:删除所有手动 Web 中间件分配。然后就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2016-12-30
    • 2016-07-15
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多