您忘记将控制器注册为服务或错过使用“controller.service_arguments”对其进行标记?

Sam*_*ksa 3 php symfony

我是 symfony 的初学者。当我在 symphony 中调用 get API 时,显示如下错误。

RuntimeException
HTTP 500 Internal Server Error
Could not resolve argument $salesteamRepository of "App\Controller\SalesController::index()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?
Run Code Online (Sandbox Code Playgroud)

小智 6

发生这种情况是因为您当前的类不充当服务,并且您在类中使用的所有类都不会由 symfony 自动注入。

如果您想为您创建的所有类自动进行依赖注入,您可以将您的类扩展为AbstractController,如下所示

class MyPet extends AbstractController{}
Run Code Online (Sandbox Code Playgroud)

这在 symfony 官方文档中已经提到过。

在 Symfony 中,控制器不需要注册为服务。但如果您使用默认的 services.yaml 配置,并且您的控制器扩展 AbstractController 类,它们会自动注册为服务。这意味着您可以像任何其他普通服务一样使用依赖项注入。