Perl Dancer,Dancer :: Plugin :: DirectoryView,Template Toolkit和模板中的共享参数

时间:2011-12-28 21:11:19

标签: perl template-toolkit param dancer

我有一个帖子路由,它返回params用于特定模板(actions.tt)。在该模板中,我使用DirectoryView插件加载一个div(使用jQuery)和一个目录的视图(dirmain.tt)。我的问题是我需要在呈现主模板(action.tt)之前将一个参数传递给DirectoryView模板。参数(dev)需要包含在目录列表中。

Perl部分:

Use Dancer;
....
post "/" => sub {
template 'actions.tt', {
    'dev' => param('dev'),
};

模板:

actions.tt

....
<div id="dir">
    <script type="text/javascript">
          $('#dir').load('/files/[% dev %]');
    </script>
</div>
....

dirmain.tt

....
how do I pass [% dev %] here before the action.tt is rendered by the browser?
....

使用某种钩子会实现这个吗? 非常感谢您的帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

params是一个提供哈希值的函数,因此params(“dev”)不会给你任何东西。这样更好:

template 'actions.tt', {
   'dev' => param->{dev},
}

但是在Dancer中,默认情况下会在模板中导出一些变量,如params,request和session。因此,您可以将“模板”之后的{}留空并在模板中使用它:

$('#dir').load('/files/[% params.dev %]');