繁体   English   中英

如何使登录用户对象可用于Laravel 5.3中的所有视图

[英]How do I make a logged in user object available to all views in Laravel 5.3

我希望能够在我的视图中获得登录用户的详细信息。 例如{{ $user->email }}

这是我的Controller.php

public $view_data = array();

public function __construct()
{
    $this->middleware('auth');
    $this->view_data['user'] = Auth::user();
}

我认为$user返回NULL 我想念什么吗?

默认情况下,它已经可以通过以下方式在所有视图中使用:

Auth::user()
auth()->user()

您可以通过以下方法在视图中直接访问loginIn用户:

{!! Auth::user()->name !!}
{!! auth()->user()->name !!}
{!! access()->user()->name !!}

{{\\ Auth :: user()}} {{\\ Auth :: user()['电子邮件']}}

登录后,Laravel已经提供了此服务。只需编写:

{{ Auth::user()->email }}
{{ auth()->user()->email }}

您还可以将ServiceProvider用于所有视图:

创建服务提供者: php artisan make:provider UserServiceProvider

应用程序\\供应商\\ UserServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Auth;

class UserServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */

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

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
    }
}

比在config\\app.php注册此服务提供商

App\Providers\UserServiceProvider::class,

现在,用户对象可用于所有视图,只需编写即可:

{{ $user->email }} 
{{ $user->username }}

Laravel与所有视图共享数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM