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: December 20, 2024