簡體   English   中英

如何在Laravel 5中的所有視圖中共享Auth :: user?

[英]How to share Auth::user among all views in Laravel 5?

我需要將當前登錄的用戶共享給所有視圖。 我試圖在AppServiceProvider.php文件中使用view->share()方法。

我有以下內容:

<?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());
    }

    //..
}

但是,當我查看視圖(登錄后)時, user變量為null。 奇怪的是, $guard->user (受保護的屬性,而不是public方法user())不是。 我得到的輸出如下:

在此輸入圖像描述

請注意,填充了guard-> user變量,但用戶變量為null。

最好使用View Composers進行此操作。

boot() ComposerServiceProvider中:

view()->composer('*', 'App\Http\ViewComposers\GlobalComposer');

在HTTP / ViewComposers中創建一個類GlobalComposer,並創建函數:

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

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

您可以在不創建文件的情況下解決此問題。

將這些代碼添加到ServiceProvider的boot()操作中就是這樣。

view()->composer('*', function($view){
  $view->with('user', Auth::user());
});

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

看看Wildcard View Composers

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM