【发布时间】:2016-08-28 17:59:26
【问题描述】:
我正在学习 Perl 并将 Dancer 用作 Web 框架。 我有两个视图(tt 文件),它们应该共享相同的导航。 因此,开始学习如何管理导航和页脚模板会很棒。
我已经阅读了模板工具包的文档,并且我已经完成了以下操作:
我已将config.yml 文件更改为:
#template: "simple"
template: "template_toolkit"
engines:
template_toolkit:
start_tag: '[%'
end_tag: '%]'
我在.pm 文件中定义了模板:
package proyecto;
use Dancer ':syntax';
our $VERSION = '0.1';
get '/' => sub {
template 'index';
};
get '/menu' => sub {
template 'menu';
};
true;
索引模板中有一个链接将访问者引导到菜单模板:
<li class="active">< a href="/menu">Menu <span class="sr-only"></span></a></li>
我想将 index.tt 中的导航代码重用到 menu.tt 中,因此我将导航代码包含在 index.tt 中,如下所示:
[% BLOCK navigation %]
#my nav code
[% END %]
为了最终将该代码包含在 menu.tt 文件中,我编写了以下代码(导航代码应该在哪里):
[% navigation = 'index.tt' %]
[% INCLUDE navigation %]
文件index.tt 和menu.tt 位于文件夹视图中。但似乎没那么容易! =(关于如何将代码从一个文件重用到位于同一目录中的另一个文件的任何建议?
【问题讨论】:
-
注意:按照惯例,Perl 中的包名以大写字母开头。
-
@这打赌我,因为我在寻找链接时迷失了阅读文档。 :) 发布答案。
-
@simbabque 我最初发布了一个 Dancer2 链接并对其进行了更改...不得不挖掘一下才能找到 Dancer1 版本。所以我猜我作弊了?? ;-)
-
@这可能是。但没关系。很好的答案。 :)
-
不相关,但您的配置文件错误(不幸的是,YAML 对空格敏感):
start_tag和end_tag指令需要比template_toolkit指令缩进更多。
标签: perl templates template-toolkit dancer