2014-07-10 19 views
5

sto usando Template::Toolkit e all'interno di un ciclo for sto cercando di cambiare il fuso orario di un oggetto:Template Toolkit :: Non valutare variabile come stringa

[%- FOR item IN c.user.items -%] 
    [% item.date.set_time_zone(c.user.timezone.name) %] 

    Date: [% item.date %] <br /> 
[% END %] 

Funziona e cambia il fuso orario, ma la funzione set_time_zone restituisce l'oggetto DateTime che viene quindi valutato sulla pagina. Quindi, ogni volta che si esegue il ciclo for, la stringa viene valutata e inserita nella pagina. So che alcuni altri sistemi di template hanno due set di tag, uno che dice basta eseguire questo codice e un altro che dice valutare questo e metterlo sulla pagina. Template :: Toolkit ha qualcosa di simile? Ho guardato ma non riesco a trovare nulla. L'unico modo che ho trovato finora di non avere la stringa valutata sulla pagina viene impostato il valore che viene restituito a una variabile:

[% var = item.date.set_time_zone(c.user.timezone.name) %] 

Qualcuno sa di un modo migliore per fare questo in Template :: Kit di strumenti?

risposta

9

provare la direttiva CALL:

[% CALL item.date.set_time_zone(c.user.timezone.name) %] 

Dalla documentazione:

La direttiva CALL è simile a entrare in valutazione della variabile chiamata, ma non stampa il risultato restituito. Questo può essere utile quando una variabile è associata a un metodo sub-routine o oggetto che si desidera chiamare ma non è interessato al valore restituito.

+0

perfetto! Grazie :) – srchulo

Problemi correlati