Paginacja lub stronicowanie służy do dzielenia treści (np. listy artykułów) na podstrony. Do przechodzenia pomiędzy poszczególnymi stronami służy pasek z numeracją i/lub przyciski nawigacyjne typu: ‹ poprzednia strona | następna strona ›. W Symfony mamy do tego gotowy moduł KnpPaginatorBundle.

paginator

Instalacja bundla:

Konfiguracja (config/packages/paginator.yaml):

Do kontrolera dodajemy metodę paginate według schematu:

Przykładowy kontroler:

  • $repository – zbiór wyników zapytania z bazy np: $repository->findAll(); jeśli nie znasz Doktryny ORM to przeczytasz o tym tutaj
  • $page_number – numer strony; za pomocą $request->query->getInt(’page’) odczytujemy wartość tej zmiennej z globalnej tablicy
  • $limit_per_page – limit pobranych rekordów np: 10

W szablonie list.html.twig (templates/blog/list.html.twig) renderujemy paginację za pomocą metody knp_pagination_render(pagination):

I to wszystko.
Do następnego –>