Symfony 3.0.9 не может получить доступ к getUser () из моего сервиса - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь получить доступ к своему пользователю из службы в Symfony 3.0.9 со следующим:

в моем сервисе. Yaml:

seal_service:
  class: FrontBundle\Service\SealService
  public: true
  arguments:
    - "@service_container"

и мой сервис выглядит так:

class SealService
{
   protected $container = null;

   public function __construct(ContainerInterface $container)
   {
       $this->container = $container;
   }

   public function getAvailableSeals($sn = null){

    $user = $this->container->get('fos_user.user_manager')->getUser();

     ...
   }

но я получаю следующую ошибку: Attempted to call an undefined method named "getUser"

Я тоже пытался $this->container->get('fos_user.user_manager')

если я использую $this->container->get('fos_user.security.controller'), я получаю Call to protected method Symfony\Bundle\FrameworkBundle\Controller\Controller::getUser() from context 'FrontBundle\Service\SealService'

Что я делаю не так, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 08 мая 2019

Не вводить контейнер в службу: вместо этого введите хранилище токенов.

seal_service:
  class: FrontBundle\Service\SealService
  public: true
  arguments:
    - ["@security.token_storage","@doctrine.orm.entity_manager"]
1 голос
/ 08 мая 2019

вот ответ:

$tokenStorage = $this->container->get('security.token_storage')->getToken();
$user = $tokenStorage->getUser();
0 голосов
/ 08 мая 2019

Используйте следующее:

$this->container->get('security.token_storage')->getToken()->getUser();

В любом случае, избегайте инъекции всего контейнера, если вам нужен только контекст безопасности.

https://symfony.com/doc/current/security.html#b-fetching-the-user-from-a-service

...