Php 将参数中的用户作为依赖项注入传递-symfony4

Php 将参数中的用户作为依赖项注入传递-symfony4,php,symfony,lexikjwtauthbundle,Php,Symfony,Lexikjwtauthbundle,错误:“无法解析”App\Controller\StudyActivityController::create()“的参数$experienceCalculator:无法自动连接服务”App\service\experienceCalculator“:方法“\uu construct()”的参数“$user”引用接口“Symfony\Component\Security\Core\user\UserInterface”“但不存在这样的服务。您是否创建了实现此接口的类?” 我正在处理一个api,我

错误:“无法解析”App\Controller\StudyActivityController::create()“的参数$experienceCalculator:无法自动连接服务”App\service\experienceCalculator“:方法“\uu construct()”的参数“$user”引用接口“Symfony\Component\Security\Core\user\UserInterface”“但不存在这样的服务。您是否创建了实现此接口的类?”

我正在处理一个api,我需要访问一个服务中的用户,该服务在控制器中作为依赖项注入传递。如果我访问控制器中的用户,它可以正常工作,但在服务中不能

// src/Controller/StudyTimeController.php

public function create(
    Request $request,
    UserInterface $user,
    ExperienceCalculator $experienceCalculator
)
{
    $experienceCalculator->calculate();
}
在传递服务的构造函数时,autowiring似乎没有找到UserInterface

// src/Service/ExperienceCalculator.php

public function __construct(
    StudyTimeRepository $studyTimeRepository,
    UserInterface $user
)
{
    $this->studyTimeRepository = $studyTimeRepository;
    $this->user = $user;
}
因此,我所做的是在configs中添加一个别名,以便服务知道传递了哪个类,该类工作正常,但用户未填充

# config/services.yaml

App\Entity\User: ~
Symfony\Component\Security\Core\User\UserInterface: '@App\Entity\User'

我不知道这是否相关,但我正在使用此捆绑包对用户进行身份验证。

像用户这样的自动连接实体不是一个好做法,因为可能存在 没有当前登录的用户或根本没有用户

相反,您应该使用始终存在的服务来检查是否有登录的用户,然后接收该用户。例如
Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface

您可以使用tokenstorage的获取当前令牌,然后使用令牌的获取方式检索当前用户,如下所示:

$user = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;

尽管如此,您在控制器中使用自动布线获得用户的原因是Symfony 3.2中添加了用户解析程序,因为像用户这样的自动布线实体不是一个好的做法,因为可能存在 没有当前登录的用户或根本没有用户

相反,您应该使用始终存在的服务来检查是否有登录的用户,然后接收该用户。例如
Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface

您可以使用tokenstorage的获取当前令牌,然后使用令牌的获取方式检索当前用户,如下所示:

$user = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
尽管如此,通过自动布线在控制器中获得用户的原因是Symfony 3.2中添加的用户解析程序