0

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

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

在上面的示例中,field1' 的值将保存“default1”,而field2' 的值将保存标量所$default2保存的任何内容。然而,上面的例子并没有这样做。有谁知道这样做的方法?谢谢!

4

2 回答 2

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',你可能还必须设置 'use_init_obj_over_item' 标志。它使用对象/表单“值”格式,其中包括嵌套的 hashrefs 和 arrayrefs。'defaults' hashref 需要一个扁平的 hashref,比如你从 'fif' (填写表格)方法中获得的。

https://metacpan.org/module/HTML::FormHandler::Manual::Defaults

于 2013-02-05T17:42:29.833 回答
0

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

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

use Data::Dumper;
print Dumper($default2);
my $form = myapp::Form::Example->new(field1=>'default1',field2=>$default2);
print Dumper($form);
于 2013-02-05T08:30:11.900 回答