目前,我正在尝试共享一个使用Session ID的变量,
$currentSessionID = session()->getId();
$inCartDetails = Cart::where('session_id', $currentSessionID)->get();
View::share('inCartDetails', $inCartDetails);
我已将其放置在AppServiceProvider的启动中,但由于“在应用启动过程中无法访问会话数据,因此应使用Taylor在添加事件中使用Taylor Otwell这样的中间件进行会话启动的对话”。
我按照它说的那样创建了一个称为CommonData的中间件
public function handle($request, Closure $next)
{
$currentSessionID = session()->getId();
$inCartDetails = Cart::where('session_id', $currentSessionID)->get();
View::share('inCartDetails', $inCartDetails);
// return $next($request);
}
如何在所有视图中全局使用的标头中使用来自middeware的此变量?标题本身没有控制器,因为它包含在主刀片中。有什么想法吗?
答案 0 :(得分:1)
为什么不使用session()帮助程序将$inCartDetails
存储在可变会话中?
要设置可变会话:
session(['inCartDetails' => $inCartDetails]);
要检索项目中任何位置的变量会话(路线,控制器和视图):
echo session('inCartDetails'); // or {{ session('inCartDetails') }} for blade views