Template-Toolkit和复杂变量

dan*_*ods 4 perl catalyst template-toolkit

假设我使用Catalyst在Perl中工作.我为一个变量分配了一个哈希数组,即:

my @array = ($some_hash); 
$c->stash->{foo}->{bar} = \@array;
Run Code Online (Sandbox Code Playgroud)

如何在Template Toolkit中从$ some_hash中选择元素,例如'id' ?在Perl我可以通过$c->stash->{foo}->{bar}->[0]->id... 访问它

非常感谢所有的帮助,我有点像Perl newb,所以如果有什么不合适的地方,请告诉我.提前致谢...

fri*_*edo 11

Template Toolkit使用统一语法来访问复杂结构的元素.这应该做你想要的:

[% foo.bar.0.id %]
Run Code Online (Sandbox Code Playgroud)


sin*_*ish 5

当您想弄清楚TT中复杂数据结构中发生的事情时,以下类型的事情会很有帮助:

[% USE Dumper; Dumper.dump_html(foo) %]
Run Code Online (Sandbox Code Playgroud)

.. 看看TT认为你有什么样的数据:

[% foo %]
Run Code Online (Sandbox Code Playgroud)

……或者更远的兔子窝:

[% FOREACH x IN foo.keys; 
USE Dumper; Dumper.dump_html(foo.$x);
foo.$x ; # to see what kind of ref it is
END %]
Run Code Online (Sandbox Code Playgroud)