带有会话消息的Laravel重定向并不总是持久存在于我的请求中

时间:2016-02-03 17:13:10

标签: php laravel session redirect laravel-5.1

我有一个使用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')

但我不愿意这样做,因为我的行动是在不同的网址之间共享的。

1 个答案:

答案 0 :(得分:2)

控制器中添加以下内容:

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