facile-it/paginator-bundle

View on GitHub
src/Resources/views/Pagination/template.html.twig

Summary

Maintainability
Test Coverage
<style media="screen" type="text/css">
    div.pagination a {
        padding: 3px;
        color: white;
        background-color: #f60;
        border: 1px solid #f60;
    }
    div.pagination a:hover, span.current-page {
        color: #f60;
        background-color: white;
    }

    span.current-page {
        padding: 3px;
        color: black;
        background-color: white;
        border: 1px solid #f60;
    }
</style>

{% if (paginationInfo.pages is not null) and (paginationInfo.page is not null) and (paginationInfo.path is not null) and (paginationInfo.pages > 0) and (paginationInfo.page <= paginationInfo.pages) %}
    <div class="pagination clear">
        <ul>
            {% set paginationStart =  paginationInfo.page - 5 > 0 ? paginationInfo.page -5 : 1 %}
            {% set paginationEnd =  paginationInfo.page + 5 <= paginationInfo.pages ? paginationInfo.page + 5 : paginationInfo.pages %}

            {% if paginationStart > 1 %}
                <a href="{{ path(paginationInfo.path, paginationInfo.query|merge(paginationInfo.routeParams)|merge({'page': 1})) }}">{{ 1 }}... </a>
            {% endif %}
            {% for i in paginationStart..paginationEnd %}
                {% if i != paginationInfo.page %}
                    <a href="{{ path(paginationInfo.path, paginationInfo.query|merge(paginationInfo.routeParams)|merge({'page': i})) }}">{{ i }}</a>
                {% else %}
                    <span class="current-page">{{ i }}</span>
                {% endif %}
            {% endfor %}
            {% if paginationEnd < paginationInfo.pages %}
                <a href="{{ path(paginationInfo.path, paginationInfo.query|merge(paginationInfo.routeParams)|merge({'page': paginationInfo.pages})) }}"> ...{{ paginationInfo.pages }}</a>
            {% endif %}
        </ul>
    </div>
{% endif %}