knp symfony pagination twig knppaginator

knp paginator bundle symfony 3



¿Cómo obtener la dirección de paginación en ramita para el paginador KNP? (2)

Estoy usando knp paginator y funciona bien, pero cuando quiero usar su función de clasificación, tengo problemas para obtener la dirección de ordenación en ramitas.

El siguiente código indica cómo obtener el encabezado de la tabla ordenada, pero sin tomar en cuenta cómo obtener la dirección del encabezado de la tabla ordenada.

{# total items count #} <div class="count"> {{ pagination.getTotalItemCount }} </div> <table> <tr> {# sorting of properties based on query components #} <th>{{ knp_pagination_sortable(pagination, ''Id'', ''a.id'') }}</th> <th{% if pagination.isSorted(''a.Title'') %} class="sorted"{% endif %}>{{ knp_pagination_sortable(pagination, ''Title'', ''a.title'') }}</th> </tr> {# table body #} {% for article in pagination %} <tr {% if loop.index is odd %}class="color"{% endif %}> <td>{{ article.id }}</td> <td>{{ article.title }}</td> </tr> {% endfor %} </table> {# display navigation #} <div class="navigation"> {{ knp_pagination_render(pagination) }} </div>

Obtengo este código de la documentación de KnpPaginator en el siguiente enlace: https://github.com/KnpLabs/KnpPaginatorBundle


Cuando llamas a {{ knp_pagination_sortable(pagination, ''Id'', ''a.id'') }} , el paquete genera automáticamente un enlace con una clase que contiene una información sobre la dirección de clasificación, que se ve más o menos así: <a translationcount="" class="asc" href="?sort=a.id&direction=desc&page=1" title="Id">Id</a> Así que simplemente coloque esta clase en su archivo CSS y ajústelo con la flecha. Si usted, por alguna razón, necesita obtener una dirección de clasificación dentro de un controlador, simplemente léala desde request $request->query->get(''direction'') .


Debería poder usar {{ pagination.getDirection() }} en su plantilla twig para encontrar la dirección de clasificación actual (si corresponde) y luego configurar sus clases según eso.

{% set direction = pagination.getDirection() %} <th{% if pagination.isSorted(''p.id'') %} class="sorted {{ direction }}"{% endif %}> {{ knp_pagination_sortable(pagination, ''Id'', ''p.id'') }} </th>

Pero ... a partir de esta publicación, KNP aún no ha fusionado esta solución: https://github.com/sroze/KnpPaginatorBundle/commit/3105a38714c6f89c590e49e9c50475f7a777009d

Cuando no hay un conjunto de parámetros de dirección, el paquete del Paginador actual arroja un error.

Entonces, hasta que la solución anterior se fusione, aún puede obtener la dirección con un poco más de detalle:

{% set directionParam = pagination.getPaginatorOption(''sortDirectionParameterName'') %} {% set params = pagination.getParams() %} {% set direction = params[directionParam] is defined ? params[directionParam] : null %} <th{% if pagination.isSorted(''p.id'') %} class="sorted {{ direction }}"{% endif %}> {{ knp_pagination_sortable(pagination, ''Id'', ''p.id'') }} </th>