Если вы хотите повысить производительность страницы, которая отображает более 1000 результатов, да или да, вам придется внедрить paginator. Мало того, что отображение строк в 1 КБ в вашем браузере может заметно снизить производительность вашей страницы в соответствии с используемым вами JavaScript или стилями, к тому же ни один пользователь не захочет прокручивать эти строки 1 КБ.
Для Symfony KnpPaginatorBundle является наиболее известным пакетом, который помогает разбить результаты вашего запроса на страницы с помощью очень простого API:
- Не требует инициализации определенных адаптеров
- Может быть настроен любым необходимым способом и т. Д .: просмотр страниц, подписчики событий.
- Возможность добавления настраиваемой фильтрации, сортировки в зависимости от параметров запроса.
- Разделяя проблемы, paginator отвечает только за создание представления разбивки на страницы, представление разбивки на страницы — для целей представления.
Вы можете настроить имена и шаблоны параметров запроса по умолчанию в config.yml и использовать пользовательские шаблоны разбиения на страницы. Один из наиболее известных шаблонов для показа — версия Bootstrap 3, однако с введением Bootstrap 4 до даты, пока в официальном комплекте не было шаблона Bootstrap v4 Sliding Pagination Control. Вот почему мы хотим поделиться с вами нашей собственной реализацией Bootstrap 4, созданной в Twig:
{#
/**
* @file
* Twitter Bootstrap v4 Sliding pagination control implementation.
*
* View that can be used with the pagination module
* from the Twitter Bootstrap v4 CSS Toolkit
* https://v4-alpha.getbootstrap.com/components/pagination/
*
* @author Carlos Delgado
*/
#}
{% if pageCount > 1 %}
{% if previous is defined %}
-
« Previous
{% else %}
-
« Previous
{% endif %}
{% if startPage > 1 %}
-
1
{% if startPage == 3 %}
-
2
{% elseif startPage != 2 %}
-
…
{% endif %}
{% endif %}
{% for page in pagesInRange %}
{% if page != current %}
-
{{ page }}
{% else %}
-
{{ page }}
{% endif %}
{% endfor %}
{% if pageCount > endPage %}
{% if pageCount > (endPage + 1) %}
{% if pageCount > (endPage + 2) %}
-
…
{% else %}
-
{{ pageCount -1 }}
{% endif %}
{% endif %}
-
{{ pageCount }}
{% endif %}
{% if next is defined %}
-
Next »
{% else %}
-
Next »
{% endif %}
{% endif %}
В нашем случае мы будем хранить файл в app/resources/views/others/twitter_bootstrap_v4_pagination.html.twig
каталог, поэтому мы можем настроить пакет paginator для использования этого файла в config.yml
файл со следующим yaml:
knp_paginator:
template:
pagination: "others/twitter_bootstrap_v4_pagination.html.twig"
Теперь, когда ваши проекты реализуют Bootstrap 4, пагинатор будет правильно отображаться, поскольку он использует классы последней «стабильной» версии Bootstrap 4.