Skip to content

Commit 93b4d4e

Browse files
committed
Merge branch 'easyadmin-routes'
2 parents 8c5ade5 + 5236f05 commit 93b4d4e

2 files changed

Lines changed: 22 additions & 9 deletions

File tree

src/Controller/Dashboard/DashboardPackagesController.php

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414
use CodedMonkey\Dirigent\Package\PackageMetadataResolver;
1515
use Composer\Semver\VersionParser;
1616
use Doctrine\ORM\EntityManagerInterface;
17+
use Doctrine\ORM\QueryBuilder;
18+
use EasyCorp\Bundle\EasyAdminBundle\Contracts\Orm\EntityPaginatorInterface;
1719
use EasyCorp\Bundle\EasyAdminBundle\Dto\PaginatorDto;
18-
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
1920
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
2021
use Symfony\Component\HttpFoundation\Request;
2122
use Symfony\Component\HttpFoundation\Response;
@@ -30,7 +31,6 @@ public function __construct(
3031
private readonly PackageRepository $packageRepository,
3132
private readonly PackageMetadataResolver $metadataResolver,
3233
private readonly MessageBusInterface $messenger,
33-
private readonly AdminUrlGenerator $adminUrlGenerator,
3434
) {
3535
}
3636

@@ -46,9 +46,7 @@ public function list(Request $request): Response
4646
$queryBuilder->setParameter('query', "%{$query}%");
4747
}
4848

49-
$paginatorDto = new PaginatorDto(20, 3, 1, true, null);
50-
$paginatorDto->setPageNumber($request->query->getInt('page', 1));
51-
$paginator = (new PackagePaginator($this->adminUrlGenerator))->paginate($paginatorDto, $queryBuilder);
49+
$paginator = $this->createPackagePaginator($request, $queryBuilder);
5250
$packages = $paginator->getResults();
5351

5452
return $this->render('dashboard/packages/list.html.twig', [
@@ -293,4 +291,18 @@ public function delete(string $packageName): Response
293291

294292
return $this->redirectToRoute('dashboard_packages');
295293
}
294+
295+
private function createPackagePaginator(Request $request, QueryBuilder $queryBuilder): EntityPaginatorInterface
296+
{
297+
$paginatorDto = new PaginatorDto(20, 3, 1, true, null);
298+
$paginatorDto->setPageNumber($request->query->getInt('page', 1));
299+
300+
$paginator = new PackagePaginator(
301+
$this->container->get('router'),
302+
$request->attributes->get('_route'),
303+
$request->attributes->get('_route_params'),
304+
);
305+
306+
return $paginator->paginate($paginatorDto, $queryBuilder);
307+
}
296308
}

src/EasyAdmin/PackagePaginator.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44

55
use Doctrine\ORM\QueryBuilder;
66
use Doctrine\ORM\Tools\Pagination\Paginator;
7-
use EasyCorp\Bundle\EasyAdminBundle\Config\Option\EA;
87
use EasyCorp\Bundle\EasyAdminBundle\Contracts\Orm\EntityPaginatorInterface;
98
use EasyCorp\Bundle\EasyAdminBundle\Dto\PaginatorDto;
10-
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGeneratorInterface;
9+
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
1110

1211
class PackagePaginator implements EntityPaginatorInterface
1312
{
@@ -21,7 +20,9 @@ class PackagePaginator implements EntityPaginatorInterface
2120
private ?int $rangeLastResultNumber = null;
2221

2322
public function __construct(
24-
private readonly AdminUrlGeneratorInterface $adminUrlGenerator,
23+
private readonly UrlGeneratorInterface $router,
24+
private readonly string $routeName,
25+
private readonly array $routeParameters = [],
2526
) {
2627
}
2728

@@ -53,7 +54,7 @@ public function paginate(PaginatorDto $paginatorDto, QueryBuilder $queryBuilder)
5354

5455
public function generateUrlForPage(int $page): string
5556
{
56-
return $this->adminUrlGenerator->set(EA::PAGE, $page)->generateUrl();
57+
return $this->router->generate($this->routeName, [...$this->routeParameters, 'page' => $page]);
5758
}
5859

5960
public function getCurrentPage(): int

0 commit comments

Comments
 (0)