Laravel 5:所有控制器中的全局Auth $ user变量

乍得·普里德尔

在我的BaseController中,我有:

public function __construct()
{
    $user = Auth::user();
    View::share('user', $user);
}

我可以在所有视图中访问$ user数组,但是如果我希望它成为所有Controller中都可用的全局变量怎么办?

我有以下工作代码:

use Auth;
use DB;

class UsersController extends BaseController
{
   public function index()
   {
        $user = Auth::user();
        $users = DB::table('users')->where('user_id', $user->user_id)->get();
        return view('pages.users.index', compact('users');
    }
}

我希望$ user变量在我所有的控制器中以及每个控制器中的所有公共函数中都可用,但是我不想重新声明“ use Auth;”。和“ $ user = Auth :: user();”

我尝试将其添加到BaseController的__construct中,但这似乎不起作用,未定义$ user变量错误。有什么想法吗?我知道有可能

双脂

在其他答案中显示,您可以:

  • 将其设置为基本控制器的属性(我不建议这样做,只会增加混乱)
  • 创建一个自定义帮助器(见下文)
  • 做就是了 \Auth::user()


另一种技术,您可以使用auth()助手:

auth()->user()

它甚至被记录在案


根据此PR,没有计划user()在Laravel中添加帮助程序。

如果您认为值得将此帮助程序添加到您的项目中,则代码如下:

function user()
{
    // short and sweet
    return auth()->user();

    // alternative, saves one function call!!
    return app('Illuminate\Contracts\Auth\Guard')->user();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel 5.5:如何定义可在所有控制器中使用的全局变量?

控制器laravel 5.3中的全局变量

Laravel控制器中的全局变量

Laravel 5.2控制器中的全局变量

在所有视图和控制器中可用的Config文件夹中的Laravel中声明全局可访问变量

无法在 Laravel 配置文件控制器中使用 Auth::user() 传递 $user 变量

Laravel 5:所有控制器方法共享的PHP变量

将变量从控制器引用到所有刀片Laravel 5

Laravel为所有自定义助手,控制器和模型设置全局变量

Laravel 将变量或对象共享给 Admin 中的所有控制器

laravel在控制器中的所有方法之间共享变量

如何从登录控制器获取变量以供Laravel中的所有视图使用?

如何在Laravel 5.2中具有全局$ user变量?

Laravel 5.6-如何在api控制器中获取auth()-> user()或$ response-> user()?

所有控制器和视图的全局变量

Laravel控制器变量

Laravel 5.4会话和Auth :: user()在控制器的构造函数中不可用

试图在控制器 Laravel 中获取非对象 Auth::user()->id 的属性“id”?

laravel 5.6 未从 laravel 中的控制器读取变量

如何在Symfony 2中为所有控制器设置全局变量?

在Rails中为所有控制器创建一个全局变量

Laravel 8 在所有控制器中使用变量

Laravel 5从控制器传递变量到视图

Laravel 5-控制器中的路径和变量参数

如何在控制器类中串联两个变量并将其传递给laravel中该类的所有视图

Laravel 5-所有模板中均提供全局Blade视图变量

Laravel 5-从控制器级别的所有请求对象中删除参数

获取Laravel 5中所有控制器和动作的列表

无法在 Laravel 控制器中插入带有变量的数组