【问题标题】:Use variable across entire application在整个应用程序中使用变量
【发布时间】:2016-08-06 12:40:15
【问题描述】:

我几乎在每条路线和几乎所有视图中都使用$user = Auth::user();。我有几十条路线和几十个视图,所以不断重复$user = Auth::user(); 感觉不对。

有没有一种方法可以让我只调用一次$user = Auth::user();,然后让它在整个应用程序中可用,包括在路由和视图中?

我正在使用 Laravel 5.2。

【问题讨论】:

标签: laravel laravel-5 laravel-5.2


【解决方案1】:

在你的app/Providers/AppServiceProvider.php

boot 方法中,粘贴此代码。这将使$user 变量在您的所有视图中都可以访问

view()->share('user', auth()->user());

或者,如果您不喜欢辅助函数,那么您可以使用外观

View::share('user', Auth::user());

并在顶部导入

use View;

对于您的整个应用访问,您可以使用config 全局助手。

把这行代码放到你的boot方法中

config('user', auth()->user());

要在任何地方访问它,请使用它

config('user');

【讨论】:

  • 我想对此进行扩展:这样做可以让您在整个应用程序中使用$user 变量而不会出现任何问题。如果发生了什么事情并且Auth::user() 不再可用,您必须更改十/十/十/千行代码以反映这一点。将此别名化并使其应用范围广泛,您只能在一处进行更改。这与repository pattern 的概念类似。
  • 这只会将它传递给所有 VIEWS,而不是整个应用程序(如路线)。
  • @ZaynAli 我试图实现你的答案,但它为用户返回 null。似乎这仅在开头存储 Auth::user() 值,因为用户未登录,所以该值为 null ......虽然不确定......
猜你喜欢
  • 2013-03-15
  • 2011-04-19
  • 1970-01-01
  • 2020-07-27
  • 2019-06-24
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多