首页 > 解决方案 > 在 Mojolicious 中将任意名称的变量传递给模板

问题描述

我想显示三个数据库表的计数DataMetaType

所以很自然地我会隐藏这些值,并渲染它们(使用Mojolicious::Lite)。

$c->stash(data => $count_data,
          meta => $count_meta,
          type => $count_type,
 );

 $c->render(template => 'tblcount');

事实证明,这data是存储中的保留关键字。观察到的效果是,在渲染后只会显示 in 的值$count_data......完全忽略模板。也没有错误。

这有点难以调试(它花了我一个小时左右的时间)。此外,我确定我不是第一个不小心误用 data 关键字(或任何其他关键字)的人。

我的问题:是否有任何安全的方法可以将具有任意名称的变量传递给模板?还是我只能忍受这种可能的名字冲突?

标签: mojoliciousperl

解决方案


存储采用任意结构,因此您可以存储任意数据的哈希。

$c->stash(stuff => {data => $count_data, ...});

然后$stuff->{data}在模板中使用。


推荐阅读