2017-04-25 64 views
0

我在Laravel 5.4中使用Sentinel。我想要做的是:獲取登錄的用戶詳細信息,但Sentinel::getUser()返回null。對於這個過程,我在this answer 中看過這條指令。我正在使用View Composer方法。獲取登錄View Composer中的用戶無法正常工作(Sentinel - Laravel 5.4)

步驟我都做

我創建了一個文件ViewComposerServiceProviderProviders文件夾內。它看起來像:

public function boot() 
    { 
     $user  = Sentinel::getUser(); //<<-- main error: dd($user) returns empty 
     $userDetail = UsersDetail::where('user_id', $user->id)->firstOrFail(); 

     if (is_null ($userDetail)) { 
      $userDetail = new UsersDetail; 
     } 

     view()->composer('backend.*', function($view) { 
      $view->with('userDetail', $userDetail); 
      //$view->with('userDetail', 'Test'); //this works fine 
     }); 
    } 

然後,我註冊這個提供在config/app.php提供商陣列 App\Providers\ViewComposerServiceProvider::class,

的時候,我通過其他變量userDetail,它的工作完美。但是,我無法獲取登錄的用戶詳細信息。我錯過了什麼嗎?

this answer之後的第一個解決方案也似乎不起作用,因爲構造是在中間件之前運行的。請任何幫助。

+0

userDetail數據的serviceProvider.php引導方法請先更換firstorFail到( ); –

+0

另一個選項檢查可以得到$ user-> id –

+0

請檢查它。 –

回答

0

轉到app\Providers\AppServiceProvider.php 然後,像下面

public function boot() 
{ 

$user  = Sentinel::getUser(); //<<-- main error: dd($user) returns empty 
     $userDetail = UsersDetail::where('user_id', $user->id)->firstOrFail(); 

     if (is_null ($userDetail)) { 
      $userDetail = new UsersDetail; 
     } 

    View::composer('userDetail', function($view) use($userDetail) { 
    $view->with('userDetail ',$userDetail); 
    }); 
} 

然後你userDetail.blade.php,你可以像這樣訪問

{{ $userDetail }} 
+0

它沒有問題,因爲傳遞給刀片的'$ userDetail'變量,問題是' Sentinel :: getUser()'返回null。 – vijayrana

+0

請將firstorFail替換爲first() –