在重定向到其他路由之后,如何清除Laravel中的会话消息

8 浏览
0 Comments

在重定向到其他路由之后,如何清除Laravel中的会话消息

我在Laravel中使用会话来显示消息。我的控制器代码如下:

return redirect()->route('abc')->with('success','数据保存成功');

用于显示消息的代码如下:

@if ($message = Session::get('success'))
         
            {{ $message }}
@endif

当我重定向到另一个路由并返回之前的页面时,消息会再次显示。

如果我使用`session::forget('success')`,则不会显示会话消息。

0
0 Comments

在Laravel中,当我们在重定向到其他路由之后,有时会遇到会话消息仍然存在的问题。解决这个问题的方法如下:

问题原因:

当我们按下浏览器的返回按钮时,浏览器会显示该页面的缓存版本。这意味着页面没有重新加载,因此会话消息仍然存在。

解决方法:

为了解决这个问题,我们可以使用以下脚本来强制重新加载页面,如果用户按下了返回按钮:

if(performance.navigation.type == 2){
    location.reload();
}

注意:不需要清除会话。

通过使用上述脚本,我们可以在用户按下返回按钮后强制重新加载页面,从而使会话消息被清除。这是一个简单而有效的解决方法。

0
0 Comments

问题出现的原因是在Laravel中重定向到其他路由后,会话消息仍然保留在会话中,因此会导致会话消息在重定向后仍然显示。解决这个问题的方法是使用Session::pull('success')Session::has('success')来代替get()方法。

在Laravel的Blade模板中,我们可以使用Session::pull('success')来获取会话消息并将其从会话中删除,或者使用Session::has('success')来检查会话中是否存在该消息。这样在重定向后,会话消息就不会再显示出来了。

如果想了解更多关于会话的内容,可以参考Laravel官方文档中关于会话的部分,链接为:https://laravel.com/docs/5.0/session

0