正如你所知道的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.
最佳做法是什么?
1条答案
按热度按时间gzszwxb41#
听起来你应该在这里使用构造函数注入和标准PHP继承(这使用了来自php 8的属性提升)
第一个