Symfony2,KnpPagination Bundle:使用图标排序

时间:2012-07-12 15:27:14

标签: symfony twig knppaginator

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

但我无法找到,如何在顶部更换我的分拣机,用图标代替文字。这是我的Twig代码:

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

那么我需要做些什么来获得一个重击图标,而不是“喜欢”这个词? 我尝试在那里设置<img src...>,但没有帮助。

1 个答案:

答案 0 :(得分:2)

嗯,首先你需要有一个拇指向上的图像资产。假设你得到一个并把它放在这里:web/images/like.png

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

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

当然,您可能希望将图片资源放在捆绑包中并使用assets:install web发布,以用于封装/组织目的。

修改

有很多方法可以解决你所说的问题。一个是macro

在你的\ 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>