首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何包含模板::工具包-宏?

如何包含模板::工具包-宏?
EN

Stack Overflow用户
提问于 2017-01-18 11:48:19
回答 2查看 653关注 0票数 4

这个问题是关于模板中宏的使用::Toolkit (Perl)。

我无法编写宏并将它们放入单独的文件中,以便在其他几个模板文件中使用它们。

我的宏位于一个名为macros.tt的单独模板文件中:

代码语言:javascript
运行
复制
----- file macros.tt ------
[% MACRO decorateStatus(status) BLOCK -%]
    [% ico = 'status_unknown' -%]
    [% IF status == "New" -%][% ico = 'status_waiting' -%]
    [% ELSIF status == "Working" -%][% ico = 'status_work' -%]
    [% ELSIF status == "Deleted" -%][% ico = 'status_deleted' -%]
    [% END -%]
    [% status %] <img src="[% c.uri_for('/images/ico/' _ ico _ '.png') %]" text="[% status %]">
[% END-%]

现在,我试图在另一个模板中使用这个宏--但是由于宏没有展开,这失败了:

代码语言:javascript
运行
复制
----- file demo.tt -------
[% INCLUDE macros.tt %]
….
[% status = ‘New’ %]
<td>[% decorateStatus(status) %]</td>
….

将宏直接放在我想要使用的文件中,一切都如预期的那样工作。

从不同的文件中包含宏的“正确”方法是什么?

EN

Stack Overflow用户

回答已采纳

发布于 2017-01-18 12:33:26

使用INCLUDE,所有变量定义(以及宏实际上只是一个花哨的变量)都被本地化到包含的文件中。这意味着宏定义在包含的文件之外是不可见的。

要使宏在调用文件中可见,您需要PROCESS而不是INCLUDE。As 文件上说

PROCESS指令类似于INCLUDE,但在处理模板之前不执行任何变量本地化。在包含的模板中对变量所做的任何更改都将在包含模板中可见。

票数 8
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41718657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档