如何在KNP分页器的枝条中获得分页方向?

Ehs*_*san 6 pagination symfony twig knppaginator

我正在使用knp paginator并且它运行良好但是当我想使用它的排序功能时,我有问题在树枝中获得排序方向.

以下代码指示如何获取已排序的表头但未考虑如何获取已排序的表头方向.

{# 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>
Run Code Online (Sandbox Code Playgroud)

我从以下链接的KnpPaginator文档中获取此代码:https: //github.com/KnpLabs/KnpPaginatorBundle

小智 9

您应该能够{{ pagination.getDirection() }}在twig模板中使用以查找当前的排序方向(如果有),然后根据它设置类.

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

但是......截至这篇文章,KNP还没有合并这个修复:https: //github.com/sroze/KnpPaginatorBundle/commit/3105a38714c6f89c590e49e9c50475f7a777009d

如果没有设置方向参数,则当前的Paginator包会引发错误.

因此,在上述修复程序合并之前,您仍然可以获得更详细的方向:

{% 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>
Run Code Online (Sandbox Code Playgroud)