2

我有一段代码CGI::Application用作它的基础,但有些东西不能正常工作。

当我尝试通过它设置某些东西时,$Template->param()它似乎没有设置。 $Template等于$self->load_tmpl($template);

我要保存的部分是:

$Template->param('symbols' => \%a_hash_ref);

我知道\%a_hash_ref包含预期值。它有一个类似的形式:

{'symbol' => 'DTX'},{'symbol' => 'QFLD'}

另外,如果我这样做

$Template->param('Hey!xD' => 'Something');

它不保存,但是

$Template->param($Pagination);

确实,where$Pagination也是一个 hash_ref。

我知道所有的值都是它们应该的值,并且我还尝试了一些简单的字符串,它们应该可以工作,但它们没有设置。我知道这一点,因为当我跑步时:

my @params = $Template->param();
die Dumper \@params;

它输出它应该设置的所有变量,但'Hey!xD'缺少预期的变量(包括字符串)。我也知道它实际上运行代码,因为这个 die Dumper 在我尝试设置值之后。

模板文件包含这段代码:

$(document).ready(function () { mainFunction('[%symbol%]'); });

任何帮助,将不胜感激。

编辑:

这是赋予参数的内容:

[ { 'date' => '2006-07-05', 'avg_gain' => undef, 'bollinger_mid' => '32.80000', 'symbol' => 'BBQ' }, { 'date' => '2006- 04-04', 'avg_gain' => undef, 'bollinger_mid' => '34.55656', 'symbol' => 'AAPL' } ... ]

4

1 回答 1

2

这实际上是一个 HTML::Template 问题,CGI::Application 默认使用它来进行模板化。

您可能在通话中die_on_bad_params设置为 0吗?load_tmpl如果您尝试设置加载的模板中不存在的参数(此处的文档),HTML::Template 应该默认死掉。禁用时die_on_bad_params,您将获得所描述的行为,其中未知模板参数被忽略并丢弃。

此外,根据 docsTMPL_LOOP将 hashrefs 的 arrayref 作为其param参数。也许像这样传递您的“符号”参数会有所帮助:

my $symbols = [{ symbol => 'DTX' },{ symbol => 'QFLD' }];
$Template->param(symbols => $symbols);

如果您发布显示错误的示例模板和小脚本,则更容易确定。

于 2014-07-05T22:58:14.107 回答