templates/_pagination.html.twig line 1

Open in your IDE?
  1. {#
  2. /**
  3.  * @file
  4.  * Twitter Bootstrap v4-beta.2 Sliding pagination control implementation.
  5.  *
  6.  * View that can be used with the pagination module
  7.  * from the Twitter Bootstrap CSS Toolkit
  8.  * https://getbootstrap.com/docs/4.0/components/pagination/
  9.  *
  10.  */
  11. #}
  12. {% macro _pagination_path(route, query, pageParameterName, page_number) %}
  13.     {% if page_number == 1 %}
  14.         {% set _route = route %}
  15.         {% set _query = query|filter((v, k) => k != pageParameterName) %}
  16.     {% else %}
  17.         {% set _route = route~'._pagination' %}
  18.         {% set _query = query|merge({(pageParameterName): page_number}) %}
  19.     {% endif %}
  20.     {{ path(_route, _query)|lower }}
  21. {% endmacro %}
  22. {% from _self import _pagination_path %}
  23. {% if pageCount > 1 %}
  24.     <nav class="pagination">
  25.         {% set classAlign = (align is not defined) ? '' : align=='center' ? ' justify-content-center' : (align=='right' ? ' justify-content-end' : '') %}
  26.         {% set classSize = (size is not defined) ? '' : size=='large' ? ' pagination-lg' : (size=='small' ? ' pagination-sm' : '') %}
  27.         <ul class="d-flex">
  28.             {% if previous is defined %}
  29.                 <li class="pagination__item">
  30.                     <a class="pagination__link" rel="prev" href="{{ _pagination_path(route, query, pageParameterName, previous) }}">{#&laquo;&nbsp;{{ 'label_previous'|trans({}, 'KnpPaginatorBundle') }}#}
  31.                         <svg class="icon">
  32.                             <use xlink:href="#icon-arrow-left"></use>
  33.                         </svg>
  34.                     </a>
  35.                 </li>
  36.             {% else %}
  37.                 <li class="pagination__item disabled">
  38.                     <span class="pagination__link d-flex">
  39.                         {#&laquo;&nbsp;{{ 'label_previous'|trans({}, 'KnpPaginatorBundle') }}#}
  40.                         <svg class="icon">
  41.                             <use xlink:href="#icon-arrow-left"></use>
  42.                         </svg>
  43.                     </span>
  44.                 </li>
  45.             {% endif %}
  46.             {% if startPage > 1 %}
  47.                 <li class="pagination__item">
  48.                     <a class="pagination__link" href="{{ _pagination_path(route, query, pageParameterName, 1) }}">1</a>
  49.                 </li>
  50.                 {% if startPage == 3 %}
  51.                     <li class="pagination__item">
  52.                         <a class="pagination__link" href="{{ _pagination_path(route, query, pageParameterName, 2) }}">2</a>
  53.                     </li>
  54.                 {% elseif startPage != 2 %}
  55.                     <li class="pagination__item pagination__item_spacer">
  56.                         <div class="pagination__link d-flex">...</div>
  57.                     </li>
  58.                 {% endif %}
  59.             {% endif %}
  60.             {% for page in pagesInRange %}
  61.                 {% if page != current %}
  62.                     <li class="pagination__item">
  63.                         <a class="pagination__link" href="{{ _pagination_path(route, query, pageParameterName, page) }}">{{ page }}</a>
  64.                     </li>
  65.                 {% else %}
  66.                     <li class="pagination__item pagination__item_first pagination__item_active">
  67.                         <a href="#" class="pagination__link">{{ page }}</a>
  68.                     </li>
  69.                 {% endif %}
  70.             {% endfor %}
  71.             {% if pageCount > endPage %}
  72.                 {% if pageCount > (endPage + 1) %}
  73.                     {% if pageCount > (endPage + 2) %}
  74.                         <li class="pagination__item pagination__item_spacer">
  75.                             <div class="pagination__link">...</div>
  76.                         </li>
  77.                     {% else %}
  78.                         <li class="pagination__item">
  79.                             <a class="pagination__link" href="{{ _pagination_path(route, query, pageParameterName, (pageCount - 1)) }}">{{ pageCount -1 }}</a>
  80.                         </li>
  81.                     {% endif %}
  82.                 {% endif %}
  83.                 <li class="pagination__item">
  84.                     <a class="pagination__link" href="{{ _pagination_path(route, query, pageParameterName, pageCount) }}">{{ pageCount }}</a>
  85.                 </li>
  86.             {% endif %}
  87.             {% if next is defined %}
  88.                 <li class="pagination__item">
  89.                     <a class="pagination__link" rel="next" href="{{ _pagination_path(route, query, pageParameterName, next) }}">
  90.                         {#{{ 'label_next'|trans({}, 'KnpPaginatorBundle') }}&nbsp;&raquo;#}
  91.                         <svg class="icon">
  92.                             <use xlink:href="#icon-arrow-right"></use>
  93.                         </svg>
  94.                     </a>
  95.                 </li>
  96.             {% else %}
  97.                 <li class="pagination__item disabled">
  98.                     <span class="pagination__link">{#{{ 'label_next'|trans({}, 'KnpPaginatorBundle') }}&nbsp;&raquo;#}
  99.                         <svg class="icon">
  100.                             <use xlink:href="#icon-arrow-right"></use>
  101.                         </svg>
  102.                     </span>
  103.                 </li>
  104.             {% endif %}
  105.         </ul>
  106.     </nav>
  107. {% endif %}