在模板工具箱中为元素添加属性

时间:2014-01-07 05:02:19

标签: perl template-toolkit

Perl代码

将菜单项作为包含链接哈希的perl数组传递

my $bet_details_menu_items = [ 
    {   
        link        => 'link 1',
        text         => 'First',
        is_internal  => 1
    },  
    {   
        link        => 'link 2'
        text        => 'Second',
        params      => { param_name1 => param_value1, param_name2 => param_value2 },
    }                                                       
];

模板工具包代码

使用模板工具包为每个

访问链接
<ul>
    [% FOREACH item IN menu_items %]
    <li>
        [% IF item.is_internal%]
        <a href="#[% item.link %]">[% item.text %]</a>
        [% ELSE %]
        <a href="[% item.link %]">[% item.text %]</a>
        [% END %]
    </li>
    [% END %]
</ul>

我尝试了什么

我尝试将所有参数分配给具有键和值的变量,然后将其分配给相应的链接

[% all_params = '' %]
[% FOREACH param IN params.keys %]
[% $all_params = $all_params _  param  _ '=' _ params.$param %]
[% END %] 
[% IF item.is_internal %]
<a href="#[% item.link %]" [% $all_params %] >[% item.text %]</a>
[% ELSE %]
<a href="[% item.link %]" [% $all_params %]>[% item.text %]</a>
[% END %]

问题

只有在打印href并打印链接文本时,参数才会进入链接

预期结果

<a href='link 1' // working fine
    param_name1=param_value1 param_name2 param_name2=param_value2 // not working as of now
> link_text //working_fine </a>

1 个答案:

答案 0 :(得分:1)

我会再次尝试,你可以实现这样的目标。

<a [% FOREACH item IN $all_params %] [% item.key %] = [% item.value %][% END %] href="#"></a>

因为在模板中,如果直接使用哈希,它会将其识别为模板中的哈希引用。它无法使用key=value

等模式直接在您的文件中解析