【问题标题】:Laravel 5.1 session not savingLaravel 5.1 会话未保存
【发布时间】:2015-11-02 19:26:57
【问题描述】:

我的会话驱动程序是 memcached。

当我在 redis 中触发事件并广播事件时,Flash 消息不会保存,但如果我不触发事件,它就可以正常工作。

我在 Laravel 5.1 上。

请帮帮我。

BROADCAST_DRIVER=redis
CACHE_DRIVER=memcached
SESSION_DRIVER=memcached

我的代码是这样的

 if ($isEmployee)
    {
        event(new AccountUpdated($data));
    }


  Session::flash('notification', 'Account has been updated.');

  return redirect()->back();

我正在使用 socket.io 进行活动并且工作正常

但 Flash 消息没有保存。

如果我不触发该事件,则 Flash 消息工作正常。

【问题讨论】:

  • 请在问题中包含您的会话/缓存等配置
  • 感谢大卫。为什么你认为我触发事件时它没有保存?
  • 我们需要真正的代码才能解决问题。
  • 事件广播正确,视图实时更新。我的问题是,当我触发该事件时,我的 Flash 消息不会保存,但只有在我触发该事件时才会保存。

标签: laravel laravel-5.1


【解决方案1】:

我没有使用过socket.io,我猜是使用flash方法存储在会话中的数据只会在后续的HTTP请求期间可用,然后会被删除。因此,当您广播请求时(我相信),flash 变量将被删除并在下一个重定向中。 试试with 方法来获得好运

return Redirect::to('user/login')->with('message', 'Login Failed');

如果您需要为更多请求保留闪存数据,您可以使用刷新方法,该方法将保留所有闪存数据以用于其他请求。如果只需要保留特定的flash数据,可以使用keep方法:

$request->session()->reflash();

参考:http://laravel.com/docs/5.1/session#flash-data

【讨论】:

    猜你喜欢
    • 2015-10-15
    • 2023-03-30
    • 2016-05-02
    • 2018-04-02
    • 2012-09-06
    • 1970-01-01
    • 2016-05-23
    • 2017-02-12
    • 2017-02-27
    相关资源
    最近更新 更多