php 重定向数据不丢失,php-重定向后未保留会话数据

我正在尝试实现一些自定义的Flash消息,并且在重定向后销毁会话数据时遇到了一些问题.

这是我创建即时消息的方法:

flash('Your topic has been created.');

这是flash()函数的声明:

function flash($message, $title = 'Info', $type = 'info')

{

session()->flash('flash', [

'message' => $message,

'title' => $title,

'type' => $type,

]);

}

这就是我使用SweetAlerts检查会话/显示Flash消息的方式.此代码包含在我要在所有Blade模板中扩展的主布局文件的底部.

@if(Session::has('flash'))

$(function(){

swal({

title: '{{ Session::get("flash.title") }}',

text : '{{ Session::get("flash.message") }}',

type : '{{ Session::get("flash.type") }}',

timer: 1500,

showConfirmButton: false,

})

});

@endif

如果在显示视图之前调用flash()函数,则上面的代码将起作用,如下所示:

public function show($slug)

{

flash('It works!');

return view('welcome');

}

但是,如果在重定向到另一个页面之前调用它,它将无法正常工作,例如:

public function show($slug)

{

flash('It does not work');

return redirect('/');

}

为什么会话数据在重定向时丢失?如何使其保持不变,以便可以显示我的即显信息?

解决方法:

我发现有必要在所有路由上应用Web中间件. Drown提到了这样做,但是自2016年3月23日起,Taylor Otwell将默认RouteServiceProvider更改为https://github.com/laravel/laravel/commit/5c30c98db96459b4cc878d085490e4677b0b67ed

通过此更改,Web中间件将自动应用于所有路由.如果现在将其再次应用到您的routes.php中,您将看到该网络在路由列表中出现了两次(php artisan route:list).这恰好使闪存数据被丢弃.

标签:php,laravel,laravel-5-2,session,redirect

来源: https://codeday.me/bug/20191010/1887193.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值