我有一段使用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);
确实,$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'=>民主基金, 'bollinger_mid'=> '32 0.80000' , 'symbol'=> 'BBQ' }, { 'date'=> '2006-04-04', 'avg_gain'=>民主基金, 'bollinger_mid'=> '34 0.55656' , 'symbol'=> 'AAPL' } ... ]
答案 0 :(得分:2)
这实际上是一个HTML :: Template问题,CGI :: Application默认使用它进行模板化。
您的die_on_bad_params
来电可能会将load_tmpl
设置为0吗?如果您尝试设置加载的模板中不存在的参数(docs here),则HTML :: Template应默认为die。当die_on_bad_params
被禁用时,您将获得您正在描述的行为,其中忽略并丢弃未知模板参数。
此外,according to the docs,TMPL_LOOP
将hashref的arrayref作为其param
参数。也许这会传递你的“符号”参数:
my $symbols = [{ symbol => 'DTX' },{ symbol => 'QFLD' }];
$Template->param(symbols => $symbols);
如果你发布了一个示例模板和显示错误的小脚本,那么肯定会更容易说出来。