diff --git a/src/Twig/Components/DownloadList.php b/src/Twig/Components/DownloadList.php index a9c2cd1..0dff9cd 100644 --- a/src/Twig/Components/DownloadList.php +++ b/src/Twig/Components/DownloadList.php @@ -6,6 +6,8 @@ use App\Download\Framework\Repository\DownloadRepository; use App\Util\Paginator; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\UX\LiveComponent\Attribute\AsLiveComponent; +use Symfony\UX\LiveComponent\Attribute\LiveAction; +use Symfony\UX\LiveComponent\Attribute\LiveArg; use Symfony\UX\LiveComponent\Attribute\LiveProp; use Symfony\UX\LiveComponent\DefaultActionTrait; @@ -14,6 +16,7 @@ final class DownloadList extends AbstractController { use DefaultActionTrait; + #[LiveProp(writable: true)] public string $type; #[LiveProp(writable: true)] @@ -39,4 +42,10 @@ final class DownloadList extends AbstractController return []; } + + #[LiveAction] + public function paginate(#[LiveArg] int $page) + { + $this->pageNumber = $page; + } } diff --git a/src/Util/Paginator.php b/src/Util/Paginator.php index 490a987..3abb4e1 100644 --- a/src/Util/Paginator.php +++ b/src/Util/Paginator.php @@ -20,6 +20,8 @@ class Paginator private $items; + public $currentPage = 1; + /** * @param QueryBuilder|Query $query * @param int $page @@ -38,6 +40,7 @@ class Paginator $this->total = $paginator->count(); $this->lastPage = (int) ceil($paginator->count() / $paginator->getQuery()->getMaxResults()); $this->items = $paginator; + $this->currentPage = $page; return $this; } diff --git a/templates/partial/paginator.html.twig b/templates/partial/paginator.html.twig index 3159619..98f8710 100644 --- a/templates/partial/paginator.html.twig +++ b/templates/partial/paginator.html.twig @@ -1,7 +1,5 @@ -{% set _currentPage = app.request.query.get('page') ?: 1 %} -{% set _currentRoute = app.request.attributes.get('_route') %} +{% set _currentPage = paginator.currentPage ?: 1 %} {% set _lastPage = paginator.lastPage %} -{% set _currentParams = app.request.query.all|merge(app.request.attributes.get('_route_params')) %} {% set _showingPerPage = (_currentPage == _lastPage) ? paginator.total - (this.perPage * (_lastPage - 1)) : paginator.items.query.maxResults %}

Showing {{ _showingPerPage }} of {{ paginator.total }} results

@@ -10,9 +8,15 @@