@Voroncheg

Symfony 4. Fos user bundle. Как достучаться до 'fos_user.user_manager'?

Всем привет. Изучаю symfony 4. (Ранних версий не изучал). В общем начал там писать по урокам таск трекер. Можно создавать, редактировать, удалять таски, админа добавил. (Использовал FOSUserBundle). Тут пришло время писать выводы тасков для отделльных юзеров. Добавил дропдаун юзеров в создание таска с помощью доктрины. Все норм. Айдишка записывается. Но заметил, что там вылазит юзер, которого я раньше демоутил. Понял, что правильней использовать api FOS. Попал на эту доку. И тут все. Пишет, что в get('fos_user.user_manager') такого сервиса нету. Неделю уже сижу. Направьте меня пожалуйста кто-нибудь на путь истинный. Что надо делать? Настраивать security.yaml и fos_user.yaml чтобы этот сервис прошел в мой контроллер? Делать новый класс и имплементить туда FOS\UserBundle\Doctrine\UserManager? Или все вместе? (Первый раз столкнулся с интерфейсами и абстрактными классами). Подскажите пожалуйста. Хочу получить что-то типа $this->container->get('fos_user.user_manager')->findUsers().
  • Вопрос задан
  • 872 просмотра
Пригласить эксперта
Ответы на вопрос 1
Сервисы в четверке по умолчанию приватные и к ним нет доступа через контейнер. Инъекция FOS\UserBundle\Model\UserManagerInterface в конструктор или метод нужного класса решит проблему

private $manager;

    public function __construct(UserManagerInterface $manager)
    {
        $this->manager = $manager;
    }

     public function fooMethod(User $user): void
     {
         $this->manager->updateUser($user);
     }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы