如何将参数传递给模板工具包函数中的子例程

时间:2015-02-01 22:01:50

标签: perl template-toolkit

我的文件 foo.tt 我想写这样的东西:

[% INCLUDE header('str', 1, 2, 3, 5, 10) %]

我的目标是在 str 上进行一些字符串操作,然后使用 foreach / for 遍历所有数字。

遗憾的是,我无法在Template toolkit中找到这种语法。

什么是模板工具包为什么要将参数传递给子例程?

任何想法怎么做?

2 个答案:

答案 0 :(得分:5)

您可以传递变量,但需要为它们命名。例如:

outer.tt2:

[% INCLUDE header.tt2 header_string="str", items=[ 1, 2, 3, 5, 10 ] -%]

header.tt2:

String: [% header_string %]
[% FOREACH item IN items -%]
Item: [% item %]
[% END -%]

输出:

String: str
Item: 1
Item: 2
Item: 3
Item: 5
Item: 10

答案 1 :(得分:1)

查看MACRO定义:

[% MACRO header(str, items) BLOCK -%]
    [% FOREACH i IN items; -%]
 ... your item code here ... 
    [% END -%]
[% END -%]

[% header('str',[1, 2, 3, 5, 10]) %]

如果TT在模板级别公开了原始参数列表,您可以按照指示调用它(例如header('str', 1, 2, 3, 5, 10)),但这非常接近。