[英]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());
}
您可以在不創建文件的情況下解決此問題。
將這些代碼添加到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.