我使用Laravel版本5.4.36并且全局会话助手不再使用了。
这就是我所做的:当登录用户访问控制器功能时,我需要保存一些数据,当用户刷新(重新加载)页面时,我想保留该数据,但似乎全局会话助手没有做这个。我做错了什么?我的会话是基于文件的。 我跟着official doc,但遗憾的是没有帮助:)
使用$request->session()->put(...)
存储数据在我的情况下是无用的,因为每当用户重新加载丢失的页面数据时。
use Illuminate\Http\Request;
class WatchController extends Controller{
public function __construct(){
$this->middleware(['auth']);
}
public function watchAds(Request $request){
$userId = Auth::user()->id;
if(!session('data')){
echo "Data not set";
$data = array(1,3,4,5);
session(['data' => $data]);
//Update, here it print data but if I do reload the page then always load this if section.
$data = session('data');
print_r($data);
}else{
echo "Data already set";
$data = session('data');
print_r($data);
}
exit;
}
}
答案 0 :(得分:2)
会话数据实际上是在请求生命周期的后期(搜索“可终结的中间件”)存储的,即使在将内容发送到用户浏览器之后也很晚。
但是代码中的exit;
会立即结束PHP脚本,因此不会执行中间件的terminate
方法。
更确切地说,您跳过执行terminate
的{{1}}方法。