Search code examples
phpsymfonyeasyadmin

Why I can't access to the paginator DTO in EasyAdmin?


I'm trying to access the EasyCorp\Bundle\EasyAdminBundle\Dto\PaginatorDtoin my Crud Controller :

public function __construct(
        private EntityManagerInterface $manager,
        private EntityRepository $entityRepository,
        private PaginatorDto $paginatorDto,
    ) {
    }

But I've got this error => Cannot autowire service "App\Controller\Activity\ActivityCrudController": argument "$paginatorDto" of method "__construct()" references class "EasyCorp\Bundle\EasyAdminBundle\Dto\PaginatorDto" but no such service exists. and I don't understand why and How to fix it :(

Any idea ?


Solution

  • I'm not an expert of that bundle so take my answer with a pinch of salt but looking at bundle's code I've noticed PaginatorDto not to be a service (as the name suggests).

    As that DTO is not a service (and it's ok it is not), you can't autowire it nor make it a service "locally" (eg.: in your application).

    So, in order to retrieve the DTO object, inject AdminContextProvider (that is a service as you can notice here) instead and use it to get the DTO

    $adminContext->getCrud()->getPaginator();