Полоса зебры с PHPTAL?

Я пробую PHPTAL и хочу отобразить таблицу с полосами зебры. Я перебираю простой массив ассоциаций php ($_SERVER).

Обратите внимание, что я не хочу использовать jQuery или что-то в этом роде, я пытаюсь изучить использование PHPTAL!

В настоящее время у меня это работает так (слишком многословно, на мой взгляд):

<tr tal:repeat="item server">
  <td tal:condition="repeat/item/odd" tal:content="repeat/item/key" class="odd">item key</td>
  <td tal:condition="repeat/item/even" tal:content="repeat/item/key" class="even">item key</td>
  <td tal:condition="repeat/item/odd" tal:content="item" class="odd">item value</td>
  <td tal:condition="repeat/item/even" tal:content="item" class="even">item value</td>
</tr>

По сути, я хочу какое-то условное присваивание на лету, но я не уверен в синтаксисе.


person starmonkey    schedule 25.11.2008    source источник
comment
Мне нравится название полосатая зебра. Никогда не слышал раньше и имеет смысл.   -  person Pindatjuh    schedule 21.05.2011
comment
Обратите внимание, что вы можете справиться с этим в CSS3, что выгодно, поскольку оставляет дизайн на усмотрение дизайнеров: tr:nth-child(odd) { background-color: #99ff99; }   -  person starmonkey    schedule 02.11.2011


Ответы (2)


Вы можете создать модификатор выражения, написав функцию phptal_tales_evenodd() (см. phptal_tales() в руководстве):

<td tal:attributes="class evenodd:repeat/item/odd">
person Kornel    schedule 26.11.2008

Ну, похоже, у меня есть свой ответ, хотя я все еще думаю, что это довольно уродливо:

<tr tal:repeat="item server">
  <td tal:content="repeat/item/key" tal:attributes="class php: repeat.item.odd ? 'odd' : 'even'">item key</td>
  <td tal:content="item" tal:attributes="class php: repeat.item.odd ? 'odd' : 'even'">item value</td>
</tr>

У кого-нибудь есть что-нибудь более изящное в поисках PHPTAL?

person starmonkey    schedule 25.11.2008