如何在Mojolicious中配置自定义templates模板目录的使用路径
Mojolicious自定义模板目录配置方法
你不需要额外引入自定义渲染器,直接修改Mojolicious应用内置渲染器的模板路径配置即可实现需求,常用有两种配置方式:
方式1:全局配置(推荐)
在定义路由、执行app->start前,将你的自定义模板目录加入渲染器的路径列表,配置一次全局生效:
#!/usr/bin/env perl use Mojolicious::Lite -signatures; # 加入自定义模板目录,默认优先级高于__DATA__区块内的模板 push @{app->renderer->paths}, '/var/www/site/templates/'; get '/' => sub ($c) { # 自动到指定目录下查找login.html.ep文件渲染 $c->render(template => 'login'); }; app->start;
如果不需要使用__DATA__区块的模板,想要完全替换默认模板路径,可以直接赋值覆盖:
@{app->renderer->paths} = ('/var/www/site/templates/');
方式2:单路由临时配置
如果只需要在某一个路由中使用自定义目录的模板,可以在路由回调内单独设置:
get '/' => sub ($c) { push @{$c->app->renderer->paths}, '/var/www/site/templates/'; $c->render(template => 'login'); };
注意事项
- 模板文件名需要符合Mojolicious命名规范:
模板名.返回格式.渲染器后缀,调用template => 'login'对应的模板文件就是login.html.ep,放在指定的模板目录下即可被正常识别。 - 配置后如果出现找不到模板的问题,可以开启调试模式启动应用(启动命令添加
--mode=development参数),日志中会输出渲染器查找模板的所有路径,方便定位问题。
内容的提问来源于stack exchange,提问作者user4035
相关产品推荐
相关产品推荐

