6

私は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>

このコードは、次のリンクの KnpPaginator ドキュメントから取得します: https://github.com/KnpLabs/KnpPaginatorBundle

4

2 に答える 2

9

{{ 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 バンドルはエラーをスローします。

したがって、上記の修正がマージされるまでは、もう少し冗長な方法で方向を取得できます。

{% 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>
于 2014-04-11T18:49:16.233 に答える
4

を呼び出すと{{ knp_pagination_sortable(pagination, 'Id', 'a.id') }}、次のようなソート方向に関する情報を保持するクラスとのリンクが bundle によって自動的に生成さ<a translationcount="" class="asc" href="?sort=a.id&direction=desc&page=1" title="Id">Id</a>れます。何らかの理由でコントローラ内でソート方向を取得する必要がある場合は、 request から読み取るだけ$request->query->get('direction')です。

于 2013-11-20T08:38:27.020 に答える