TWIG:循环产生任何可能的组合

时间:2013-11-30 19:57:43

标签: html-table twig combinations cycle

我遇到了以下问题: 我正在使用TWIG和foreach循环来生成包含数据库内容的html表。为了更好地概览表格,我想为每个第2行着色。因此,我利用了树枝提供的循环功能。我的twig模板看起来像这样:

<tbody>
        {% for category in categories %}
            <tr class="gradeA {{ cycle(['even', 'odd'], loop.index0) }}">
                <td class="sorting_1" >
                    {{ category.name }}
                </td>
                <td>
                    {{ category.parent }}   
                </td>
                <td>
                    {% if category.createdAt %}
                        {{ category.createdAt|date('Y-m-d H:i:s') }}
                    {% endif %} 
                </td>
                <td>
                    {% if category.modifiedAt %}
                        {{ category.modifiedAt|date('Y-m-d H:i:s') }}
                    {% endif %} 
                </td>
                <td>
                    <a style="text-decoration: none">
                        <img src="{{ asset('bundles/winpimpcore/images/icons/Axialis-Square-Light-Grey-Png/32x32/Write.png') }}" />
                    </a>
                    <a href="{{ path('_category_delete', { 'id': category.id }) }}" style="text-decoration: none">
                        <img src="{{ asset('bundles/winpimpcore/images/icons/Axialis-Square-Light-Grey-Png/32x32/Trash.png') }}" />
                    </a>
                </td>
            </tr>
        {% endfor %}
    </tbody>

生成的输出是这个(我省略了tr内容,因为它不相关):

<tbody>
   <tr class="gradeA odd">
   <tr class="gradeA even">
   <tr class="gradeA even odd">
   <tr class="gradeA odd even">
   <tr class="gradeA odd">
   <tr class="gradeA even">
   <tr class="gradeA even odd">
   <tr class="gradeA even">
</tbody>

所以TWIG会产生['even','odd']的任何可能组合,但我需要的是:

<tbody>
   <tr class="gradeA odd">
   <tr class="gradeA even">
   <tr class="gradeA odd">
   <tr class="gradeA even">
   <tr class="gradeA odd">
   <tr class="gradeA even">
   <tr class="gradeA odd">
   <tr class="gradeA even">
   ...
</tbody>

我是否遗漏了某些东西,甚至不理解循环功能的目的?

3 个答案:

答案 0 :(得分:0)

你不能class="{% if loop.index is odd %}odd{% endif %}"class="{% if loop.index is even %}even{% endif %}",所有的计算都是为你完成的! :)

答案 1 :(得分:0)

你应该改变这一行(索引末尾的拼写错误)

OBJS := \
    $(patsubst %.c, %.o,$(C_SRCS))

# add linker script
OBJS += \
    /src/general/config/startup_stm32f429xx.o

C_DEPS := \
    $(patsubst %.c,%.d,$(C_SRCS))
#$(info C_DEPS='$(C_DEPS)')

# compile src files
%.o: %.c
    @echo 'Building file: $<'
    @echo 'Invoking: Cross ARM C Compiler'
    arm-none-eabi-gcc $(CFLAGS) $(INCDIRS) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -c -o "$@" "$<"
    @echo 'Finished building: $<'
    @echo ' '

var reg = new RegExp('\\b(tap(?!\"))', 'ig')

('tap click "tap" tap.').match(reg)

我确实尝试过,但效果很好。

答案 2 :(得分:0)

这是一个可以在CSS中完全解决的问题(并且应将样式相关的代码保留在IMO的样式表中)。不必将oddeven类应用于每一行,而是可以通过以下方式对整个表进行样式设置:

.mytableclassname tbody tr:nth-child(odd) {
    background-color: #ccc;
}
.mytableclassname tbody tr:nth-child(even) {
    background-color: #fff;
}