提问人:dranieri 提问时间:2/4/2016 更新时间:2/4/2016 访问量:1735
带有会话消息的 Laravel 重定向并不总是持续到我的请求中
Laravel redirect with session message does not always persist to my request
问:
我有一个用Laravel构建的管理工具,用户可以在其中对单个记录执行某些操作。
代码的构建方式是,我正在执行对 URL 的发布,执行必要的代码,更新数据库,然后使用会话消息重定向回。
控制器代码:
return Redirect::back()->with("msg_success", "SMS has been sent!");
现在,从重定向呈现的页面顶部有一个检查,用于显示会话消息(如果存在)。
查看代码:
@if (Session::has('msg_success'))
<div class="col-lg-10">
<div role="alert" class="alert alert-success alert-dismissible fade in">
<button aria-label="Close" data-dismiss="alert" class="close" type="button"><span aria-hidden="true">×</span></button>
<strong>Success! </strong>{{ Session::get('msg_success') }}
</div>
</div>
<div class="clearfix"></div>
@endif
出于某种原因,有时会显示消息,有时则不显示。我一辈子都想不通为什么。可能是中间件拦截了请求,然后执行了另一个请求,然后它被破坏了吗?我没有看到任何看起来会导致这种情况的东西。
任何想法都会有所帮助。我想过在重定向时使用 URL 参数,例如
return Redirect::to('explicitURL?success=whateverthesuccesmessageis')
但我宁愿不要这样做,因为我的操作在不同的 URL 之间共享。
答:
3赞
user1012181
2/4/2016
#1
在控制器中添加以下内容:
Session::flash('msg_success', 'SMS has been sent!')
return Redirect::back();
在视图中:
@if (Session::has('msg_success'))
<div class="col-lg-10">
<div role="alert" class="alert alert-success alert-dismissible fade in">
<button aria-label="Close" data-dismiss="alert" class="close" type="button"><span aria-hidden="true">×</span></button>
<strong>Success! </strong>{{ Session::get('msg_success') }}
</div>
</div>
<div class="clearfix"></div>
@endif
评论
0赞
dranieri
2/4/2016
有趣的是,在阅读了他们的文档后,这看起来是正确的方法。我试一试,看看问题是否仍然存在。谢谢。
0赞
dranieri
2/4/2016
进一步阅读后,看起来这正在做我目前正在做的事情......laravel.com/docs/5.2/........如果滚动到最底部。
0赞
user1012181
2/4/2016
您没有在控制器中设置会话。如果需要访问 Session 变量,则需要先创建它。
0赞
user1012181
2/4/2016
或者试试这个:return redirect('sms-page')->with('msg_success', 'SMS has been sent!');
评论
->with(["msg_success" => "SMS has been sent!"]);