You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mojolicious命令行渲染文件时如何使用stash及正确传参?

Mojo::Template 命令行使用问题解答

传参报错修复

你遇到的报错是因为 render_file 方法的参数传递逻辑和控制器stash不同:直接将hash展开为列表(%$options)传入时,会被识别为多个独立的位置参数,而非模板可直接调用的键值对结构,不符合方法的参数要求。

正确写法是直接传入hash引用,即可实现和控制器stash完全一致的使用效果,模板内可直接通过键名调用对应值:

my $mt = Mojo::Template->new;
# 直接传入hash引用,不需要展开为列表
my $html = $mt->render_file('templates/some_file.html.ep', $options);

如果你的$options包含value => 1的键值对,模板内直接写<%= $value %>即可读取到对应值,和控制器渲染模板的用法完全一致。

命令行使用render_to_string说明

render_to_string 方法不限制运行环境,命令行场景下可以正常调用,示例用法如下:

use Mojo::Template;

my $mt = Mojo::Template->new;
# 构造和stash结构一致的hash引用
my $stash = { value => 1, name => '测试内容' };
# 渲染字符串模板
my $output = $mt->render_to_string('参数name的值为:<%= $name %>,value的值为:<%= $value %>', $stash);
print $output;

运行上述代码会输出:参数name的值为:测试内容,value的值为:1

内容的提问来源于stack exchange,提问作者muhana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:42:01