[英]Accessing hashes in Perl templates
使用Perl的HTML::Template
模块时,如何访问哈希中的变量?
我在Perl代码中构建以下哈希:
# Load success/error flash messages
if ($query->param("submit")) {
$template->param(
FLASH => {
CLASS => "success",
MESSAGE => "Your cart has been successfully updated!"
}
);
}
我想在模板中访问这些变量。 要访问常规变量,请执行以下操作:
<TMPL_VAR NAME=FLASH>
如何在模板中访问FLASH ['CLASS']?
使用进入。 (点)
FLASH.CLASS
HTML :: Template始终需要数组的哈希,数组的哈希等等。 如果您具有任意数据结构,则可能需要尝试使用HTML :: Template :: Compiled在哪里可以使用点语法(免责声明:我是作者)
还有HTML :: Template :: Plugin :: Dot,但我从未测试过,而且似乎有更多限制。
文档中没有任何内容指示您可以将参数设置为hashref。 与您要执行的操作最接近的是将hashref放入arrayref中:
$template->param(
FLASH => [ {
CLASS => "success",
MESSAGE => "Your cart has been successfully updated!"
} ]
);
然后,您可以通过以下方式访问它:
<TMPL_LOOP NAME=FLASH>
<TMPL_VAR NAME=CLASS>
<TMPL_VAR NAME=MESSAGE>
</TMPL_LOOP>
但是拥有一个包含单个元素的数组可能会过大。 一种替代方法是摆脱hashref并展平结构:
$template->param(
FLASH.CLASS => "success",
FLASH.MESSAGE => "Your cart has been successfully updated!"
);
...
<TMPL_VAR NAME=FLASH.CLASS>
<TMPL_VAR NAME=FLASH.MESSAGE>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.