如何使已登录的用户对象可用于 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
在我看来 return NULL
。我错过了什么吗?
默认情况下已在所有视图中可用:
Auth::user()
auth()->user()
您可以通过以下方法在您的视图中直接访问登录用户:
{!! Auth::user()->name !!}
{!! auth()->user()->name !!}
{!! access()->user()->name !!}
{{ \Auth::user() }}
{{ \Auth::user()['email'] }}
Laravel已经在您登录后提供此服务,只需填写:
{{ Auth::user()->email }}
{{ auth()->user()->email }}
您还可以对所有视图使用 ServiceProvider:
创建服务提供商:php artisan make:provider UserServiceProvider
转到
app\providers\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 }}
我希望能够在我的视图中获得登录用户的详细信息。例如 {{ $user->email }}
.
这是我的 Controller.php
:
public $view_data = array();
public function __construct()
{
$this->middleware('auth');
$this->view_data['user'] = Auth::user();
}
$user
在我看来 return NULL
。我错过了什么吗?
默认情况下已在所有视图中可用:
Auth::user()
auth()->user()
您可以通过以下方法在您的视图中直接访问登录用户:
{!! Auth::user()->name !!}
{!! auth()->user()->name !!}
{!! access()->user()->name !!}
{{ \Auth::user() }} {{ \Auth::user()['email'] }}
Laravel已经在您登录后提供此服务,只需填写:
{{ Auth::user()->email }}
{{ auth()->user()->email }}
您还可以对所有视图使用 ServiceProvider:
创建服务提供商:php artisan make:provider UserServiceProvider
转到
app\providers\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 }}