Назначение нескольких классов тегу с использованием PHPTAL

У меня есть массив данных, которые я хочу вывести как UL, используя PHPTAL (easy) с атрибутами класса, предоставленными массивом (easy), атрибут класса для первого и для последнего элемента (easy)... все одновременно (жесткий).

То есть. Я хочу объединить:

<ul tal:repeat="item items">
    <li class="${item/class}">${item/text}</li>
</ul>

с этим

<ul tal:repeat="item items">
    <li tal:attributes="class repeat/item/first 'first'">${item/text}</li>
</ul>

и это

<ul tal:repeat="item items">
    <li tal:attributes="class repeat/item/last 'last'">${item/text}</li>
</ul>

Это чисто презентационный материал, поэтому я бы предпочел сделать это исключительно на PHPTAL. Это возможно? Как?

2 ответа

Решение

Нет, для этого нет чистой СКАЗКИ.

<li tal:attributes="class php:repeat.item.last ? 'last' 
                          : (repeat.item.first ? 'first' : NULL)">

Это довольно старый поток, но потому что никто не упомянул об этом: "более чистый" путь, вероятно, через пользовательский модификатор. ( http://phptal.org/manual/en/split/custom-modifiers.html). Тогда вы могли бы иметь:

<li tal:attributes="class css-ordinal:repeat.item">

и в качестве выгоды вы можете использовать это в других элементах, так как это кажется довольно общей идиомой.

Другие вопросы по тегам