如何在 Twig 中为 KNP 分页器获取分页方向?
Posted
技术标签:
【中文标题】如何在 Twig 中为 KNP 分页器获取分页方向?【英文标题】:How to get Pagination direction in twig for KNP paginator? 【发布时间】: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
【问题讨论】:
【参考方案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 会自动生成一个包含有关排序方向信息的类的链接,看起来像这样:<a translationcount="" class="asc" href="?sort=a.id&direction=desc&page=1" title="Id">Id</a>
所以只需将这个类放入您的 css 文件并使用箭头设置它的样式。如果您出于某种原因需要在控制器中获取排序方向,只需从请求 $request->query->get('direction')
中读取它即可。
【讨论】:
以上是关于如何在 Twig 中为 KNP 分页器获取分页方向?的主要内容,如果未能解决你的问题,请参考以下文章