有没有办法将变量绑定到模板工具包模板?

a7o*_*ton 2 template-toolkit dancer

我有一个数组,我传递给TT文件,用于填充导航栏.

我正在使用主模板作为主体内容的基础和子模板.

我想知道是否可以声明'主模板应该总是接收这个数组',而不是每次加载视图时都必须传递这个数组(哦,是的,我正在使用Dancer btw:P),ex :

get '/' => sub {
    template 'index', { for_all_i_know => $this_never_changes }
}

get '/about' => sub {
    template 'about', { for_all_i_know => $this_never_changes }
}
Run Code Online (Sandbox Code Playgroud)

而不是那样做,有没有办法清理它?就像是:

bind template 'main' { for_all_i_know => $this_never_changes };
Run Code Online (Sandbox Code Playgroud)

那样我就可以这样做:

get '/' => sub {
    template 'index';
}
Run Code Online (Sandbox Code Playgroud)

并且主模板仍会加载变量'for_all_i_know'

小智 5

是的,你想在钩子中声明这些变量.例如,在您的主要课程中:

hook 'before_template_render' => sub {

  var helpdesk => 'help@example.com';

};
Run Code Online (Sandbox Code Playgroud)

然后在您的视图或布局模板中,您可以访问以下内容:

<p> For assistance please contact us at <% vars.helpdesk %>. 
Run Code Online (Sandbox Code Playgroud)

......无需明确传递它.