получить зарегистрированного пользователя в View Composer не работает (Sentinel - Laravel 5.4)

Я использую Sentinel в Laravel 5.4. Что я пытаюсь сделать, так это: получить информацию о зарегистрированном пользователе, но Sentinel::getUser() возвращает null. Для этого процесса я видел эту инструкцию в этом ответе. Я использую метод View Composer.

Выполненные шаги

Я создал файл ViewComposerServiceProvider внутри папки Providers. Это выглядит как:

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 Providers как App\Providers\ViewComposerServiceProvider::class,

Когда я передаю другие переменные в userDetail, все работает отлично. Но я не могу получить информацию о зарегистрированном пользователе. Я что-то упускаю?

После первого решения из этот ответ также кажется неработающим, поскольку конструкция запускается до промежуточного программного обеспечения. Любая помощь, пожалуйста.


person VijayRana    schedule 25.04.2017    source источник
comment
пожалуйста, замените firstorFail на first();   -  person Md.Jewel Mia    schedule 25.04.2017
comment
Другой вариант проверки, можете ли вы получить $user-›id   -  person Md.Jewel Mia    schedule 25.04.2017
comment
Пожалуйста, проверь это.   -  person Md.Jewel Mia    schedule 25.04.2017
comment
Я упомянул в вопросе, $user является нулевым.   -  person VijayRana    schedule 25.04.2017
comment
см. документацию laravel.com/docs/5.4/views   -  person Md.Jewel Mia    schedule 25.04.2017
comment
Что-то меняет view()-›composer на View::composer(   -  person Md.Jewel Mia    schedule 25.04.2017


Ответы (1)


Перейдите к app\Providers\AppServiceProvider.php Затем ваш метод загрузки serviceProvider.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, как это

{{ $userDetail }}
person Md.Jewel Mia    schedule 25.04.2017
comment
Это не проблема с переменной $userDetail, переданной блейдам, проблема в том, что Sentinel::getUser() отвечает нулевым значением. - person VijayRana; 25.04.2017
comment
пожалуйста, замените firstorFail на first() - person Md.Jewel Mia; 25.04.2017