2010-01-15 5 views
6

Можно ли отменить анонимный список в наборе шаблонов?как изменить анонимный список в наборе шаблонов?

например.

[% FOREACH month IN [1..12].reverse %] 
    [% month %] 
[% END %] 

(кроме этого не работает).

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

+0

Похоже, кому-то нужно написать шаблон. :: Plugin :: Autobox. – oeuftete

ответ

10

Извините, нет. Возможность создавать анонимные массивы in situ - это особый случай, который обрабатывает парсер TT. Вы не можете работать с ними, как в обычном Perl, без промежуточного шага назначения именованной переменной.

EDIT: Вы не можете даже передать в подпрограмму, чтобы попытаться использовать так:

[% FOREACH month IN my_reverse([1..12]) %] 
    [% month %] 
[% END %] 

Также вы можете попробовать использовать метод объекта:

[% FOREACH month IN testObj.my_reverse([1..12]) %] 
    [% month %] 
[% END %] 

Они будут компилироваться, но в каждом случае конструкция FOREACH видит головку цепочки, например a CODE ссылка в первом случае и благословенный объект во втором.

+0

Спасибо Адаму, это очень полезно знать. – aidan

0

Я немного нового, но что об этом:

[% месяцы = [ 'января', 'февраль', 'мар', ...]; ## месяцев массив

[% FOREACH I = [(months.size-1) -1 .. 0]%] ## подсчитывает -11 до 0 для 12 элементов [% месяцев [(I - 1)] ## преобразует i в положительное число - отображает месяцы [11], месяцы [10] ... месяцев [0]

0
<!-- show 2010 2009 2008 2007 --> 
[% SET startyear = 2007 %] 
[% SET endyear = 2010 %] 
[% SET allyears = [ startyear .. endyear ] %] 
[% FOREACH year IN alleyears.reverse %] 
    <li>[% year %]</li> 
[% END %] 
Смежные вопросы