Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Добрый вечер.
Версия Laravel: 5.3.28
Версия PHP: 7.0.9
Операционная система и её версия: Windows 7 64bit
Вендор и версия Веб-сервера: XAMPP 3.2.2
Подскажите, пож-та, как можна получить id авторизированного пользователя в ServiceProvider?
Пробовал в файле app\Providers\AppServiceProvider.php прописал следующий код:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use View;
use Auth;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
dd(Auth::user()->id);
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
На выходе получаю следующею ошибку
Whoops, looks like something went wrong.
1/1 ErrorException in AppServiceProvider.php line 20: Trying to get property of non-objectin AppServiceProvider.php line 20
at HandleExceptions->handleError('8', 'Trying to get property of non-object', 'C:\xampp\htdocs\test.xx\app\Providers\AppServiceProvider.php', '20', array()) in AppServiceProvider.php line 20
at AppServiceProvider->boot()
at call_user_func_array(array(object(AppServiceProvider), 'boot'), array()) in Container.php line 508
at Container->call(array(object(AppServiceProvider), 'boot')) in Application.php line 769
at Application->bootProvider(object(AppServiceProvider)) in Application.php line 752
at Application->Illuminate\Foundation\{closure}(object(AppServiceProvider), '12')
at array_walk(array(object(EventServiceProvider), object(RoutingServiceProvider), object(AuthServiceProvider), object(CookieServiceProvider), object(DatabaseServiceProvider), object(EncryptionServiceProvider), object(FilesystemServiceProvider), object(FoundationServiceProvider), object(NotificationServiceProvider), object(PaginationServiceProvider), object(SessionServiceProvider), object(ViewServiceProvider), object(AppServiceProvider), object(AuthServiceProvider), object(EventServiceProvider), object(RouteServiceProvider), object(HashServiceProvider)), object(Closure)) in Application.php line 753
at Application->boot() in BootProviders.php line 17
at BootProviders->bootstrap(object(Application)) in Application.php line 203
at Application->bootstrapWith(array('Illuminate\Foundation\Bootstrap\DetectEnvironment', 'Illuminate\Foundation\Bootstrap\LoadConfiguration', 'Illuminate\Foundation\Bootstrap\ConfigureLogging', 'Illuminate\Foundation\Bootstrap\HandleExceptions', 'Illuminate\Foundation\Bootstrap\RegisterFacades', 'Illuminate\Foundation\Bootstrap\RegisterProviders', 'Illuminate\Foundation\Bootstrap\BootProviders')) in Kernel.php line 254
at Kernel->bootstrap() in Kernel.php line 145
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
at Kernel->handle(object(Request)) in index.php line 53
Не в сети
.
Изменено Dima24 (30.01.2017 22:18:58)
Не в сети
Auth::user() будет доступен только после того как отработает миддлварь, которая восстанавливает сессию, а потом ещё и миддлварь, которая восстанавливает пользователя из сессии. сервис провайдеры отрабатывают раньше, их предназначение – конфигурация приложения как такового – они отрабатывают даже на artisan-командах, где никаких сессий и пользователей в принципе нет
короче остановись, подумай зачем ты пытаешься это сделать, а затем найди другой способ добиться желаемого результата
Auth::user() будет доступен только в контексте http-запроса, только на маршрутах в группах web.php и api.php и только внутри самого экшена, конструктор контроллера отрабатывает также – до миддлварей
Не в сети
Спасибо огромное за оперативный ответ. Буду переделывать логику.
Не в сети