Laravel在多个控制器之间共享变量

时间:2019-05-15 16:07:21

标签: php laravel

我正在使用AppServiceProvider与所有相关视图共享特定的管理数据。

现在,我也希望与所有与管理员相关的控制器共享管理员数据,以替换Auth::guard('admin')->user()->firstname by $admin->firstname

$id = Auth::guard('admin')->user()->id;
$admin = Admin::findOrFail($id)->first();

我如何与所有相关的Controller共享这段代码,以通过firstname获得管理员$admin->firstname

1 个答案:

答案 0 :(得分:0)

我会去创建一个全球中间件

php artisan make:middleware AdminCarrier

在中间件中,您可以将$admin变量添加到$request包中,并通过Controller访问它。

class AdminCarrier
{
    public function handle($request, Closure $next)
    {
        $id = Auth::guard('admin')->user()->id;
        $admin = Admin::findOrFail($id)->first();

        $request->request->add(['admin' => $admin]);

        return $next($request);
    }
}

在控制器中,您可以通过以下方式访问它:

$request->admin

通过在Http/Kernel.php上注册中间件来确保中间件是全局的