繁体   English   中英

在Perl模板中访问哈希

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM