Symfony, Knp Paginator Bundle:使用图标排序

Posted

技术标签:

【中文标题】Symfony, Knp Paginator Bundle:使用图标排序【英文标题】:Symfony2, KnpPagination Bundle:Sorting using icons 【发布时间】:2012-07-12 15:27:13 【问题描述】:

我正在使用 KNPPanginator Bundle,对它非常满意。

但我不知道如何用图标而不是文本替换顶部的分拣机。这是我的树枝代码:

    % block pagination_head %
    <thead>
    <tr>

        <th> pagination.sortable('likes', 'u.likePoints')|raw </th>
        <th> pagination.sortable('title', 'u.title')|raw </th>
        <th> pagination.sortable('date', 'u.created')|raw </th>



    </tr>
    </thead>
    % endblock %

那么我需要做什么来获得一个重击图标,而不是“喜欢”这个词? 我尝试在那里粘贴&lt;img src...&gt;,但没有帮助。

【问题讨论】:

【参考方案1】:

嗯,首先你需要有一个竖起大拇指的图片资源。假设您确实得到了一个并将其放在这里:web/images/like.png

那么你需要做的就是这个(假设pagination.sortable('likes', 'u.likePoints')返回字符串“like”):

<th> asset( "images/" ~ pagination.sortable('likes', 'u.likePoints') ~ ".png" </th>

当然,出于封装/组织目的,您可能希望将图像资源放入您的包中并使用assets:install web 发布它。

编辑

有很多方法可以解决您所说的问题。一种是创建macro。

在 Your\Bundle\Resources\views\Macros\bootstrap.html.twig 中

% macro icon_class( type ) %
  % set type_class_map = 
    like: 'icon-user'
   %
   type_class_map[type] 
% endmacro %

然后,在你需要的模板中

% import "YourBundle:Macros:bootstrap.html.twig" as bootstrap %

% set heading = pagination.sortable('likes', 'u.likePoints') %
<th class=" bootstrap.icon_class(heading) "> heading </th>

【讨论】:

好吧,我正在使用 twitter bootstrap 作为图标,所以我宁愿使用类似 之类的东西来表示图标。 感谢您的想法。我在这里做了代码pastebin.com/taJZtZQq,但后来我得到了错误: Key " likePoints a> " 用于带有键 "likePoints" 的数组在第 5 行的 /coding/mynewsite/src/Tracker/MembersBundle/Resources/views/Macros/bootstrap.html.twig 中不存在......所以它似乎期望不同形式的数组。

以上是关于Symfony, Knp Paginator Bundle:使用图标排序的主要内容,如果未能解决你的问题,请参考以下文章

knp_paginator 无法打开流

如何使用 knp_paginator 将锚点附加到 url

如何正确地将 KNP Paginator Bundle 的分页居中?

在我自己的服务中使用 knp_paginator

KNP Paginator 和可使用 ajax 排序

Knp Paginator与搜索表单