2

假设我的模板中有以下内容:

[%- pages = [ 'one', 'two', 'three' ] -%]

<p>Go to page [%- ... -%]</p>

假设EVAL_PERL没有设置(即我不能使用[%- PERL -%]),我需要在[%- ... -%]上面放什么以获得以下输出?

<p>Go to page "a randomly picked element of pages"</p>
4

2 回答 2

9

默认情况下 Template没有任何支持rand,因此您必须通过其他代码(如Slash)导入它或使用Template::Plugin::Math,例如:

[%- 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>
于 2009-12-10T15:16:39.253 回答
4

如果我必须做任何复杂的事情,我只需使用[%PERL%]部分并跳过模板工具包语法。

此外,我在控制器中尽可能多地计算并传入要使用的值的数据结构。我尽量不在模板中选择值或创建新值。将逻辑移入模板后,当您有另一组模板时,您必须重新定义它。

于 2009-12-10T18:21:26.967 回答