假设我的模板中有以下内容:
[%- pages = [ 'one', 'two', 'three' ] -%]
<p>Go to page [%- ... -%]</p>
假设EVAL_PERL
不设置(即,我无法使用[%- PERL -%]
块),我需要将哪些内容放在[%- ... -%]
以上,以便得到以下输出?
<p>Go to page "a randomly picked element of pages"</p>
答案 0 :(得分:9)
默认情况下,模板中没有rand
支持,因此您必须通过其他代码(如Slash)或Template::Plugin::Math导入它,例如:< / p>
[%- USE Math -%]
[%- pages = [ 'one', 'two', 'three' ] -%]
<p>Go to page [%- pages.${ Math.rand(pages.size) } -%]</p>
输出:
$ tpage test.html
<p>Go to page three</p>
答案 1 :(得分:4)
如果我必须做任何复杂的事情,我只使用[%PERL%]
部分并跳过Template Toolkit语法。
此外,我尽可能多地在控制器中找出并传递要使用的值的数据结构。我尝试永远不要在模板中选择值或创建新值。将逻辑移入模板后,如果有另一组模板,则必须重新定义它。