ArgumentResolver
Reference : Symfony ArgumentValueResolver
On utilise 2 classes afin d'avoir accès directement aux informations de pagination dans un controller:
Utilisations
 | <?php
class AlbumController
{
    public function list(Pagination $pagination): Response
    {
        /** @var PaginatedData */
        $paginatedData = $this->getQueryBus(new ListQuery($pagination));
        return $this->render('list.html.twig', ['pagination' => $paginatedData]);
    }
}
  
 | 
Repositories
PaginatorInterface : une interface que tous nos repositories doivent renvoyer lors d'une pagination. 
- A Doctrine 
Paginator : L'implementation de cet interface pour Doctrine ORM. 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19  | <?php
class AlbumRepository
{
    /**
     * @return PaginatorInterface<Album>
     */
    public function listPaginated(
        Pagination $pagination,
        array $filters = [],
        array $orderBy = []
    ): PaginatorInterface {
        $queryBuilder = $this->createQueryBuilder('album');
        $this->applyFilters($queryBuilder, $filters);
        $this->applyOrderBy($queryBuilder, $orderBy);
        return Paginator::createFromQueryBuilder($queryBuilder, $pagination);
    }
}
  
 | 
View
 | <?php
PaginatedData::createFromPaginator($paginator);
  
 | 
 | <?php
PaginatedData::createFromPaginator($paginator, static function (Album $album) use ($stats): AlbumView {
    return AlbumView::create($album, $stats[$album->getReference()] ?? null);
});
  
 | 
Project references
                
                  
                    
  
    
      Last update: October 14, 2025