【问题标题】:Laravel Share Variables between multiple ControllersLaravel 在多个控制器之间共享变量
【发布时间】:2019-10-02 20:17:52
【问题描述】:

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

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

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

如何与所有相关控制器共享这段代码,例如通过$admin->firstname 获取管理员firstname

【问题讨论】:

  • Auth::guard('admin')->user() 返回什么?,你试过Auth::user()->firstname 吗?

标签: php laravel


【解决方案1】:

我将着手创建一个全局中间件

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注册中间件来确保它是全局的

【讨论】:

  • 谢谢,但这对我不起作用……我包括了 Illuminate\Support\Facades\Auth 以及 Admin Model,但是 $id = Auth::guard('admin')-> user()->id 是空的,虽然我已经登录了。
  • dd(Auth::guard('admin')->user()) 说什么?
  • 它显示为空,是否有其他方法来处理我的问题?
  • view composer of view->分享可能对你有帮助laravel.com/docs/5.8/views#view-composers
  • @arety_ 那么您没有正确验证用户身份。卫兵一定用错了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 2013-05-06
  • 2016-09-02
  • 2014-03-07
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
相关资源
最近更新 更多