首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载模板的Dancer插件

加载模板的Dancer插件
EN

Stack Overflow用户
提问于 2011-09-08 15:12:12
回答 2查看 621关注 0票数 2

在不更改视图默认目录的情况下,如何从不在'app/ views‘目录中的Dancer::Plugin加载模板?

这不起作用/it将默认视图路径添加到文件路径/:

代码语言:javascript
复制
package Dancer::Plugin::MyPlugin;
use Dancer ':syntax';
use Dancer::Plugin;

any '/test' => sub {
    template '/path_to_template/test.tt' => {
    };
};

register_plugin;

1;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-08 18:37:07

您可以调用engine来获取Dancer::Template对象并调用其render方法,例如:

代码语言:javascript
复制
my $template_engine = engine 'template';
my $content = $template_engine->render('/path/to/template.tt', { 'name' => 'value' });

然后,要以默认布局返回呈现的内容,请调用apply_layout

代码语言:javascript
复制
return $template_engine->apply_layout($content);
票数 4
EN

Stack Overflow用户

发布于 2011-09-08 18:14:24

目前,我认为您需要在模板调用之前设置views设置,然后在之后将其更改回来,例如:

代码语言:javascript
复制
my $views_dir = setting('views');       # remember current setting
setting 'views' => '/some/other/path';  # temporarily use our desired path
my $content = template 'test', $params; # render the view
setting 'views' => $views_dir;          # restore previous setting
return $content;

然而,这是丑陋的。

我认为template关键字接受system_path选项是有意义的,就像send_file一样,所以你可以这样说:

代码语言:javascript
复制
template '/path/to/view.tt', $params, { system_path => 1 };

为此,我提出了一个问题,并将在下一个版本中实现它:https://github.com/sukria/Dancer/issues/645

(披露:我是Dancer开发团队的一员)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7344425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档