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



我使用的是HTML::FormHandler,我希望能够动态设置表单的默认值

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

在上面的示例中,field1的值将保持"default1",而field2的值将保留标量$default2的任何值。然而,上面的例子并没有做到这一点。有人知道这样做的方法吗?谢谢

有很多方法可以设置默认值。您可以使用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"而不是数据库行(项),因此,如果您也传递"项",则可能还必须设置"use_init_obj_over_item"标志。它使用对象/表单"value"格式,其中包括嵌套的hashrefs和arrayrefs。"defaults"hashref需要一个扁平的hashref,例如从"fif"(填充表单)方法中获得的hashref。

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

从文档来看,Q中的代码很好。请尝试使用以下内容调试问题。这将允许你在物体内部小便,看看发生了什么

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

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

最新更新