symfony 将服务添加到BaseController父级

f2uvfpb9  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(138)

正如你所知道的symfony中的控制器扩展了AbstractController,我想在基本控制器中添加一些常用的方法,并简单地在控制器中的方法中使用,例如$this-〉validate,所以我创建了一个扩展AbstractController的基本控制器。问题是我如何在BaseController中使用我的ValidationService?我必须在BaseController中添加构造,因此再次传递父构造函数。另一个解决方案是将ValidationService放在BaseController中,类似于$this->container->get("my.validation.service"),这会产生如下错误:

Service "my.validation.service" not found: even though it exists in the app's container, the container inside "App\Controller\VendorController" is a smaller service locator that only knows about the "form.factory", "http_kernel", "parameter_bag", "request_stack", "router", "security.authorization_checker", "security.csrf.token_manager", "security.token_storage", "serializer" and "twig" services. Try using dependency injection instead.

最佳做法是什么?

gzszwxb4

gzszwxb41#

听起来你应该在这里使用构造函数注入和标准PHP继承(这使用了来自php 8的属性提升)
第一个

相关问题