Php 会话变量未在Laravel 5中发送
我有一个Laravel应用程序,与会话变量相关的一些奇怪的事情正在发生。我在控制器中有一个方法,它检查一些输入,并根据某些条件决定是继续还是只返回(我的问题就在这里),当我执行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()->
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中间件查看您的访问日志。这是只为下一个请求刷新数据,如果您重定向回的任何页面也重定向到某个位置,您将最终丢失该数据。