【问题标题】:How to get Pagination direction in twig for KNP paginator?如何在 Twig 中为 KNP 分页器获取分页方向?
【发布时间】:2013-11-17 07:26:06
【问题描述】:

我正在使用 knp 分页器,它运行良好,但是当我想使用它的排序功能时,我无法在 twig 中获取排序方向。

下面的代码是说明如何获取排序后的表头,而不是关于如何获取排序后的表头方向。

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

【问题讨论】:

    标签: symfony pagination twig knppaginator


    【解决方案1】:

    您应该能够在您的 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

    当没有设置方向参数时,当前的Paginator bundle会抛出错误。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-22
        • 1970-01-01
        • 2016-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多