Использование схемы управления загрузкой Bootstrap 4 с помощью KnpPaginatorBundle в Symfony 3

Если вы хотите повысить производительность страницы, которая отображает более 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 %}
  • {% 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 %}
  • {% 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.

Ссылка на основную публикацию
Adblock
detector