_pagination.html.twig
| {# | |
| Parameters: | |
| * total (int): number of pages | |
| * current (int): current pages | |
| * url (string): route name & query (string): route parameter | |
| ex: list/page-5?q=myFilter (5 = page and query = myFilter) | |
| * nearbyPagesLimit (int) optional: limit of pages around the current page | |
| #} | |
| {% macro pagination(total, current, url, nearbyPagesLimit = 4) %} | |
| {% spaceless %} | |
| {% if total > 1 %} | |
| <ul class="pagination"> | |
| {% for i in 1..total %} | |
| {% if 0 == (current - nearbyPagesLimit) - loop.index %} | |
| <li><a href="{{ (url ~ 1)|e }}">1</a></li> | |
| {% if 1 != loop.index %} | |
| <li><span>…</span></li> | |
| {% endif %} | |
| {% elseif 0 == (current + nearbyPagesLimit) - loop.index and (current + nearbyPagesLimit) < total %} | |
| <li><span>…</span></li> | |
| {% elseif 0 < (current - nearbyPagesLimit) - loop.index %} | |
| {% elseif 0 > (current + nearbyPagesLimit) - loop.index %} | |
| {% else %} | |
| <li {{ current == loop.index ? 'class="active"' }}> | |
| {% if current == loop.index %} | |
| <span>{{ loop.index }}</span> | |
| {% else %} | |
| <a href="{{ url ~ loop.index }}">{{ loop.index }}</a> | |
| {% endif %} | |
| </li> | |
| {% endif %} | |
| {% endfor %} | |
| {% if current != total and (current + nearbyPagesLimit) < total %} | |
| <li><a href="{{ (url ~ total)|e }}">{{ total }}</a></li> | |
| {% endif %} | |
| </ul> | |
| {% endif %} | |
| {% endspaceless %} | |
| {% endmacro %} |