HTML :: FormHandler动态设置默认表单值

时间:2013-02-05 07:00:22

标签: perl html-form default-value

我正在使用HTML::FormHandler,我希望能够为表单动态设置默认值。这将是我希望能够做的一个很好的例子:

#this doesn't work
my $form = myapp::Form::Example->new(field1=>'default1',field2=>$default2);

在上面的示例中,field1的值将保持“default1”,而field2的值将保留标量$default2所持有的值。但是,上面的例子没有这样做。有谁知道这样做的方法?谢谢!

2 个答案:

答案 0 :(得分:2)

有很多方法可以设置默认值。您可以使用init_object:

my $form = MyApp::Form::Example->new;
$form->process( init_object => { field1 => 'default1', field2 => 'default2' }, ... );

您还可以使用“默认值”快捷键动态更新字段:

$form->process( defaults => { field1 => 'default1', field2 => 'default2' }, ... );

'init_object'代替数据库行(item),所以如果你也传递'item',你可能还需要设置'use_init_obj_over_item'标志。它使用object / form'value'格式,包括嵌套的hashrefs和arrayrefs。 'defaults'hashref需要一个flatned hashref,例如你从'fif'(填写形式)方法得到的。

请参阅https://metacpan.org/module/HTML::FormHandler::Manual::Defaults

答案 1 :(得分:0)

从文档中,Q中的代码是好的。请尝试使用以下方法调试问题。这将允许你偷看对象的“内部”,看看发生了什么。

我的猜测:默认值被实际数据覆盖或变量为空。

use Data::Dumper;
print Dumper($default2);
my $form = myapp::Form::Example->new(field1=>'default1',field2=>$default2);
print Dumper($form);