如何在 KNP 分页器的树枝中获取分页方向



我正在使用 knp 分页器,它运行良好,但是当我想使用它的排序功能时,我在树枝中获取排序方向时遇到问题。

以下代码指示如何获取排序后的表头,但不介绍如何获取排序后的表头方向。

{# 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>

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

您应该

能够在 twig 模板中使用{{ pagination.getDirection() }}来查找当前的排序方向(如果有),然后基于此设置您的类。

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

但。。。截至本文,KNP尚未合并此修复程序:https://github.com/sroze/KnpPaginatorBundle/commit/3105a38714c6f89c590e49e9c50475f7a777009d

当没有设置方向参数时,当前分页器捆绑包将引发错误。

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

{% 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>

当你调用 {{ knp_pagination_sortable(pagination, 'Id', 'a.id') }} 时,bundle 会自动生成一个包含有关排序方向信息的类的链接,如下所示: <a translationcount="" class="asc" href="?sort=a.id&direction=desc&page=1" title="Id">Id</a> 因此,只需将此类放在css文件中并使用箭头设置样式即可。如果您出于某种原因需要在控制器中获取排序方向,只需从请求$request->query->get('direction')读取即可。

相关内容

  • 没有找到相关文章

最新更新