perl – 如何包含Template :: Toolkit-宏?
发布时间:2020-12-16 06:06:52 所属栏目:大数据 来源:网络整理
导读:这个问题是关于Template :: Toolkit(Perl)中宏的用法 我没有编写宏并将它们放入一个单独的文件中,以便在其他几个模板文件中使用它们. 我的宏位于名为macros.tt的单独模板文件中: ----- file macros.tt ------[% MACRO decorateStatus(status) BLOCK -%] [%
这个问题是关于Template :: Toolkit(Perl)中宏的用法
我没有编写宏并将它们放入一个单独的文件中,以便在其他几个模板文件中使用它们. 我的宏位于名为macros.tt的单独模板文件中: ----- 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-%] 现在我正在尝试在另一个模板中使用此宏 – 但是由于宏未展开而失败: ----- file demo.tt ------- [% INCLUDE macros.tt %] …. [% status = ‘New’ %] <td>[% decorateStatus(status) %]</td> …. 将宏直接放在我想要使用它的文件中,一切都按预期工作. 从不同文件中包含宏的“正确”方法是什么? 解决方法
使用INCLUDE,所有变量定义(以及宏实际上只是一个奇特的变量)都被本地化为包含的文件.这意味着宏定义在包含文件之外是不可见的.
要使宏在调用文件中可见,您需要PROCESS而不是INCLUDE.如the documentation says:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |