Twig Pagination Bootstrap 5
<nav aria-label="Page navigation example">
<ul
class="pagination justify-content-center">
{# precedent #}
<li class="page-item {{ app.request.query.get('page')==1 or app.request.query.get('page')==0 ? 'disabled' }} ">
{% if app.request.query.get('page') is defined and app.request.query.get('page')>1 %}
{% set precedent = app.request.query.get('page') -1 %}
{% else %}
{% set precedent = 1 %}
{% endif %}
<a class="page-link" href="{{ path('¤entity¤_index',{'page':precedent,'tri':app.request.query.get('tri'),'ordre':app.request.query.get('ordre')}) }}">
<span aria-hidden="true">«</span>
</a>
</li>
{% if pagesMaxi/10>6 %}
{# 1 #}
<li class="page-item">
<a class="page-link" href="{{ path('¤entity¤_index',{'page':1,'tri':app.request.query.get('tri'),'ordre':app.request.query.get('ordre')}) }}">1</a>
</li>
{# pages millieu #}
{% for item in 1..5 %}
<li class="page-item">
<a class="page-link " href="{{ path('¤entity¤_index',{'page':(pagesMaxi/10/6*loop.index)|number_format(0),'tri':app.request.query.get('tri'),'ordre':app.request.query.get('ordre')}) }}">{{(pagesMaxi/10/6*loop.index)|number_format(0)}}</a>
</li>
{% endfor %}
{# maxi #}
<li class="page-item">
<a class="page-link" href={{ path('¤entity¤_index',{'page':(pagesMaxi/10)|number_format(0),'tri':app.request.query.get('tri'),'ordre':app.request.query.get('ordre')} ) }}>{{(pagesMaxi/10)|number_format(0)}}</a>
</li>
{% else %}
{% for item in 1..(pagesMaxi/10)|number_format(0) %}
<li class="page-item">
<a class="page-link " href="{{ path('¤entity¤_index',{'page':loop.index,'tri':app.request.query.get('tri'),'ordre':app.request.query.get('ordre')}) }}">{{loop.index}}</a>
</li>
{% endfor %}
{% endif %}
{# suivant #}
<li class="page-item {{ app.request.query.get('page') >= (pagesMaxi/10)|number_format ? 'disabled' }}">
{% if app.request.query.get('page')==0 %}
{% set suivant = 2 %}
{% else %}
{% set suivant = app.request.query.get('page') +1 %}
{% endif %}
<a class="page-link" href="{{ path('¤entity¤_index',{'page':suivant,'tri':app.request.query.get('tri'),'ordre':app.request.query.get('ordre')}) }}">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
cadot.eu