如何在Laravel 5中的所有视图中共享Auth :: user?

Chr*_*ris 6 php laravel laravel-5

我需要将当前登录的用户共享给所有视图.我试图view->share()AppServiceProvider.php文件中使用该方法.

我有以下内容:

<?php namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use Illuminate\Contracts\Auth\Guard;


class AppServiceProvider extends ServiceProvider {


    public function boot(Guard $guard)
    {
        view()->share('guard', $guard);
        view()->share('user', $guard->user());
    }

    //..
}
Run Code Online (Sandbox Code Playgroud)

但是,当我查看视图(登录后)时,该user变量为null.奇怪的是,$guard->user(受保护的属性,而不是公共方法user())不是.我得到的输出如下:

在此输入图像描述

请注意,填充了guard-> user变量,但用户变量为null.

小智 9

最好使用View Composers进行此操作.

在您的ComposerServiceProvider中boot():

view()->composer('*', 'App\Http\ViewComposers\GlobalComposer');
Run Code Online (Sandbox Code Playgroud)

在HTTP/ViewComposers中创建一个类GlobalComposer,并创建函数:

public function compose( View $view )
{
    $view->with('authUser', Auth::user());
}
Run Code Online (Sandbox Code Playgroud)

http://laravel.com/docs/5.0/views#view-composers


hay*_*lem 6

您可以在不创建文件的情况下解决此问题.

将这些代码添加到ServiceProvider的boot()操作中就是这样.

view()->composer('*', function($view){
  $view->with('user', Auth::user());
});
Run Code Online (Sandbox Code Playgroud)

来源也相同:http://laravel.com/docs/5.0/views#view-composers

看看Wildcard View Composers.