如何在 Catalyst 应用程序的 Template Tookit 模板中定义常量?
我想在我的 TT 模板中使用常量。 在 HTML::Mason (我之前选择的模板引擎)中,我可以
<%once>
use MyApp::Constants qw(CONSTANT);
</%once>
这样 做:我可以在模板工具包中执行此操作吗? 正如标题中提到的,这是一个 Catalyst 应用程序,所以我想我可以将常量放入存储中,但是似乎有点尴尬。
--edit
抱歉 - 我应该提到我想使用我自己的常量 - 从 MyApp::Constants 导出,没有重复。
I want to use a constant in my TT template. In HTML::Mason (my previous templating engine of choice) I could do:
<%once>
use MyApp::Constants qw(CONSTANT);
</%once>
How can I do this in Template Toolkit? As mentioned in the title this is a Catalyst app so I was thinking I could put the constants in the stash but that seems a bit awkward.
--edit
Sorry - I should have mentioned I want to use my own constants - exported from MyApp::Constants, without duplication.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 TT 配置中,您可以使用 VARIABLES 选项来传递处理时将传递给每个模板的值列表。 使用一些符号表技巧,您可以将所有常量吸出到配置中:
这会查看包
MyApp::Constants
中的所有符号,检查它们是否被定义为子例程(这就是< code>constant.pm 在后台执行),然后使用map
向 TT 提供它们的 hashref。In your TT configuration, you can use the VARIABLES option to pass a list of values that will be passed to every template when it's processed. Using some symbol table trickery, you can suck out all your constants into the config:
This looks at all the symbols in the package
MyApp::Constants
, checks if they are defined as subroutines (this is whatconstant.pm
does under the hood) and then usesmap
to provide a hashref of them to TT.几种可能性。
只需定义一些变量:
使用全局变量:
正如您在问题正文中已经提到的,还有这样的:
http://template-toolkit.org/docs/manual/Variables.html# section_Compile_Time_Constant_Folding
Several possibilities.
Just define some variables:
Use the global variable:
As you already mentioned in the question body, there's also this:
http://template-toolkit.org/docs/manual/Variables.html#section_Compile_Time_Constant_Folding