#symfony
#symfony
Вопрос:
Я вводлю класс «TokenStorageInterface» в службу.Услуга также вводится от подписчика.»TokenStorageInterface» всегда возвращает false.Я попытался ввести безопасность, но все равно вернул значение null.
class RestaurantService { private TokenStorageInterface $tokenStorage; public function __construct(TokenStorageInterface $tokenStorage) { $this-gt;tokenStorage = $tokenStorage; } public function getRestaurantId():int{ if($this-gt;tokenStorage-gt;getToken() instanceof User){ // always false ....
Использование ресторанного сервиса
class OverridesSubscriber implements EventSubscriberInterface { private $restaurantId; public function __construct(RestaurantService $restaurantService) { $this-gt;restaurantId = $restaurantService-gt;getRestaurantId();
Комментарии:
1. Токены не являются пользователями. Обычно вы делаете что-то вроде $TokenStorage — gt;getToken()-gt;gt;getUser()
2. @Cerad Вы правы, но $TokenStorage-gt;getToken() всегда равен нулю. Тот же код работает с контроллером.
3. Вы используете свой сервис в конструкторе подписчика. Это подписчик запроса ядра? Если это так, то подписчик создается как часть процесса начальной загрузки. Информация о пользователе безопасности также находится в подписчике, который еще не был вызван. Поэтому переместите getRestaurantId из конструктора в любой метод, который действительно нуждается в идентификаторе. Просто вопрос времени.
4. @Cerad, это сработало. Большое вам спасибо 🙂