Php 会话变量未在Laravel 5中发送

Php 会话变量未在Laravel 5中发送,php,laravel,laravel-5,session-variables,Php,Laravel,Laravel 5,Session Variables,我有一个Laravel应用程序,与会话变量相关的一些奇怪的事情正在发生。我在控制器中有一个方法,它检查一些输入,并根据某些条件决定是继续还是只返回(我的问题就在这里),当我执行return redirect()->back()时,我想发送一个Json变量,所以简单地说,我有: $msg=json_encode([ 'status' => 'failed', 'field'=>'mail' ]); return redirect()->back()->

我有一个Laravel应用程序,与会话变量相关的一些奇怪的事情正在发生。我在控制器中有一个方法,它检查一些输入,并根据某些条件决定是继续还是只返回(我的问题就在这里),当我执行
return redirect()->back()
时,我想发送一个Json变量,所以简单地说,我有:

$msg=json_encode([
     'status' => 'failed',
     'field'=>'mail'
 ]);
return redirect()->back()->with('msg',$msg);
因此,它重定向得很好,但在我看来:

@if ( Session::has('msg') )
   //come stuffs
@endif

但是似乎
msg
变量没有传递。根据Laravel文档,当使用
重定向回时
变量可通过
会话

访问,我在使用Laravel 5.2时在项目a中也遇到了这个问题。我不知道这是否是一个bug,也不知道它是否已被修复,但我最终没有使用
redirect()->back()
来解决它。我认为这可能与浏览器的缓存机制有关。如果您最终找到原因,我会很感兴趣。

我认为您需要使用
$request->session()->put('key','value')在启动重定向之前


阅读

上的文档,它“在我测试时对我有用”。 可能您的会话没有存储数据。请检查您的会话是否正常工作。 我的测试输出

   @if ( Session::has('msg') )
       {{ session('msg') }}
    @endif 

你能做一些类似于
if(isset($request->session()->get('key')){}
是的,我是在put之后写的
$request->session()->put('key',value')
并且它存在,但是在视图中它不再存在。您应该在视图中放置if语句uhhh好的,
未定义变量$request
但是我尝试了
@if(!Session::has('message'))
并且它输入了,所以它没有保存会话变量yes,只是检查一下,问题可能是因为我正在使用web中间件查看您的访问日志。这是只为下一个请求刷新数据,如果您重定向回的任何页面也重定向到某个位置,您将最终丢失该数据。