Как отобразить функциональную нумерацию страниц в шаблоне Twig 3

#arrays #symfony #pagination #twig #twig-filter

Вопрос:

Цель состоит в том, чтобы добавить разбиение на страницы с помощью ветки 3, которая отображает и функционирует идентично разбиению на страницы, используемому в нижней части каналов вопросов переполнения стека:

Скриншот разбиения на страницы переполнения стека

Исследование этого в других вопросах и на внешних форумах дало результаты только с использованием устаревших функций ветки, поэтому спрашивайте здесь, если у кого-то есть какие-либо идеи о том, как это правильно сделать.

У меня есть шаблон веточки, который в настоящее время отображает разбиение на страницы, но численно перечисляет и ссылается на каждую страницу в списке без обрезки и добавления многоточий, как это делает переполнение стека (также у него нет динамических следующих/предыдущих ссылок). Для некоторого фона некоторые решения по параметрам формируются вокруг API, с которым я работаю, и следуют его документации для HTTP-запросов к данным JSON. Этот шаблон функционален, но он непрактичен с точки зрения пользовательского дизайна:

 {% set pgonpage = 5 %}
  {% set pgofpages = (count/pgonpage) | round(0, 'ceil') %}
    <p>{% for i in 1..pgofpages %} 
    {% if i==urlparam.pg %} 
    (<strong>{{urlparam.pg}}</strong>)
  {% else %} 
    <a href=?pg={{i}}>{{i}}</a>
  {% endif %} 
{% endfor %}</p>
 

Для краткости я удалил часть шаблона выше, которая содержит основной контент, но для уточнения {% set pgonpage = 5 %} тег задает количество данных JSON, которые будут отображаться на данной странице, и является функциональным.

Вот как выглядит URL-адрес шаблона:

 {% set page = 1 %}
  {% if urlparam.pg > 0 %}
    {% set page = urlparam.pg %}
  {% endif %}
https://api.example.com?per_page=5amp;page={{page}}
 

Это результат, если на https://actual.example.com?pg=1 :

Скриншот разбиения на страницы, полученный из текущего шаблона веточки