2017-04-25 18 views
0

私はLaravel 5.4でSentinelを使用しています。私がしようとしているのは:ユーザー詳細を取得しますが、Sentinel::getUser()はnullを返します。。このプロセスでは、私はこの指示をthis answer に見ました。私はView Composerメソッドを使用しています。View Composerのログインユーザーが動作しない(Sentinel - Laravel 5.4)

手順私はProvidersフォルダ内のファイルViewComposerServiceProviderを作成している

を行っています。私はuserDetailに他の変数を渡すと、

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

はその後、私はそれが完璧に働いて、 App\Providers\ViewComposerServiceProvider::class,

としてconfig/app.phpプロバイダの配列にこのプロバイダを登録します。それは次のようになります。しかし、私はログインしたユーザーの詳細を取得することはできません。何か不足していますか?

this answerからの最初の解決策に続き、コンストラクトはミドルウェアの前に実行されているため、動作していないようです。助けてください。

+0

ようuserDetailデータにアクセスすることができ

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の下のようなあなたのserviceProvider.phpの起動方法は、(最初​​にfirstorFailを交換してください); –

+0

別のオプションのチェックで$ user-> id –

+0

を確認してください。 –

答えて

0

ゴーへapp\Providers\AppServiceProvider.php 次にあなたがこの

{{ $userDetail }} 
+0

) '$ userDetail'変数をブレードに渡しても問題はありません。 Sentinel :: getUser() 'が応答しています。 – vijayrana

+0

firstorFailをfirst()に置き換えてください。 –

関連する問題