我正在尝试访问Crud控制器中的EasyCorp\Bundle\EasyAdminBundle\Dto\PaginatorDto
:
public function __construct(
private EntityManagerInterface $manager,
private EntityRepository $entityRepository,
private PaginatorDto $paginatorDto,
) {
}
但我有这个错误=〉Cannot autowire service "App\Controller\Activity\ActivityCrudController": argument "$paginatorDto" of method "__construct()" references class "EasyCorp\Bundle\EasyAdminBundle\Dto\PaginatorDto" but no such service exists.
,我不明白为什么和如何修复它:(
你知道吗?
2条答案
按热度按时间bvjveswy1#
我不是这个包的Maven,所以对我的答案持保留态度,但是在查看包的代码时,我注意到
PaginatorDto
不是一个服务(顾名思义)。由于DTO不是一项服务(它不是也没关系),因此您不能自动连接它,也不能使它成为“本地”服务(例如:)。
因此,为了检索DTO对象,请改为注入
AdminContextProvider
(正如您在这里所注意到的,这是一个服务),并使用它来获取DTObvjveswy2#
您的crud控制器应该扩展
AbstractCrudController
,它给予您访问当前的管理上下文。因此,如果你想在你的crud控制器方法中使用它,你应该能够访问paginator:
如果你想在你的crud控制器之外做同样的事情,让我们假设在另一个服务中,你需要注入
AdminContextProvider
,首先得到AdminContext
,然后以同样的方式做。