Ошибка: «Не удается разрешить аргумент $ experienceCalculator для« App \ Controller \ StudyActivityController :: create () »: Невозможно автоматически подключить службу« App \ Service \ ExperienceCalculator »: аргумент« $ user »метода« __construct () »ссылается на интерфейс "Symfony \ Component \ Security \ Core \ User \ UserInterface", но такой службы не существует. Вы создали класс, реализующий этот интерфейс? "
Я работаю над API, и мне нужно получить доступ к пользователю в службе, которую я передаю в виде внедрения зависимости в контроллер. Если я получаю доступ к пользователю в контроллере, он работает нормально, но в сервисе нет.
// src/Controller/StudyTimeController.php
public function create(
Request $request,
UserInterface $user,
ExperienceCalculator $experienceCalculator
)
{
$experienceCalculator->calculate();
}
Кажется, что автопроводка не находит UserInterface при передаче в конструктор службы.
// src/Service/ExperienceCalculator.php
public function __construct(
StudyTimeRepository $studyTimeRepository,
UserInterface $user
)
{
$this->studyTimeRepository = $studyTimeRepository;
$this->user = $user;
}
Итак, я добавил псевдоним в конфигах, чтобы служба знала, какой класс передан, что сработало, но пользователь не заполнен.
# config/services.yaml
App\Entity\User: ~
Symfony\Component\Security\Core\User\UserInterface: '@App\Entity\User'
Не знаю, насколько это актуально, но я использую этот пакет LexikJWTAuthenticationBundle для аутентификации пользователя.