ikucheriavenko
6/9/2017 - 6:08 AM

Some useful sources to work with pagination and list in TWIG templates

Some useful sources to work with pagination and list in TWIG templates

{% if admin.datagrid.pager.haveToPaginate() %}
    <div class="pagination">
        <span class="pagination-infos">
            {{ admin.datagrid.pager.page }} / {{ admin.datagrid.pager.lastpage }}
            -
            {% transchoice admin.datagrid.pager.nbresults with {'%count%': admin.datagrid.pager.nbresults} from 'SonataAdminBundle' %}list_results_count{% endtranschoice %}
        </span>
        <div class="pagination-config">
            {% if not app.request.isXmlHttpRequest %}
                <label class="control-label" for="{{ admin.uniqid }}_per_page">{% trans from 'SonataAdminBundle' %}label_per_page{% endtrans %}</label>
                <select class="per-page small" id="{{ admin.uniqid }}_per_page" style="width: auto; height: auto">
                    {% for per_page in admin.getperpageoptions %}
                        <option {% if per_page == admin.datagrid.pager.maxperpage %}selected="selected"{% endif %} value="{{ admin.generateUrl('list', {'filter': admin.datagrid.values | merge({'_per_page': per_page})}) }}">
                            {{ per_page }}
                        </option>
                    {% endfor %}
                </select>
            {% endif %}
        </div>
        <ul>
            {# first/prev #}
            {% if admin.datagrid.pager.page != 1  %}
                <li class="pagination-first"><a href="{{ admin.generateUrl('list', admin.modelmanager.paginationparameters(admin.datagrid, 1)) }}" title="{{ 'link_first_pager'|trans({}, 'SonataAdminBundle') }}">&laquo;</a></li>
            {% endif %}
            {% if admin.datagrid.pager.page != admin.datagrid.pager.previouspage %}
                <li class="pagination-prev"><a href="{{ admin.generateUrl('list', admin.modelmanager.paginationparameters(admin.datagrid, admin.datagrid.pager.previouspage)) }}" title="{{ 'link_previous_pager'|trans({}, 'SonataAdminBundle') }}">&lsaquo;</a></li>
            {% endif %}

            {# Set the number of pages to display in the pager #}
            {% for page in admin.datagrid.pager.getLinks() %}
                {% if page == admin.datagrid.pager.page %}
                    <li class="pagination-current"><a href="{{ admin.generateUrl('list', admin.modelmanager.paginationparameters(admin.datagrid, page)) }}">{{ page }}</a></li>
                {% else %}
                    <li><a href="{{ admin.generateUrl('list', admin.modelmanager.paginationparameters(admin.datagrid, page)) }}">{{ page }}</a></li>
                {% endif %}
            {% endfor %}

            {# next/last #}
            {% if admin.datagrid.pager.page != admin.datagrid.pager.nextpage %}
                <li class="pagination-next"><a href="{{ admin.generateUrl('list', admin.modelmanager.paginationparameters(admin.datagrid, admin.datagrid.pager.nextpage)) }}" title="{{ 'link_next_pager'|trans({}, 'SonataAdminBundle') }}">&rsaquo;</a></li>
            {% endif %}
            {% if admin.datagrid.pager.page != admin.datagrid.pager.lastpage  %}
                <li class="pagination-last"><a href="{{ admin.generateUrl('list', admin.modelmanager.paginationparameters(admin.datagrid, admin.datagrid.pager.lastpage)) }}" title="{{ 'link_last_pager'|trans({}, 'SonataAdminBundle') }}">&raquo;</a></li>
            {% endif %}
        </ul>
    </div>
{% endif %}