2017-04-25 24 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()로 바꾸십시오. –