2013-02-05 39 views
0

我使用HTML::FormHandler,我希望能夠爲表單動態設置默認值。這裏將是我想什麼,能夠做一個很好的例子:HTML :: FormHandler動態設置默認表單值

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

在上面的例子中,field1的價值將舉行‘缺省1’和field2的價值將持有任何標$default2持有。但是,上面的例子並沒有這樣做。有誰知道一種方法來做到這一點?謝謝!

回答

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'標誌。它使用object/form'value'格式,其中包括嵌套的hashrefs和arrayrefs。 'defaults'hashref需要一個扁平化的hashref,比如你從'fif'(填寫表單)方法中獲得。

請參閱https://metacpan.org/module/HTML::FormHandler::Manual::Defaults

+0

偉大的解決方案。謝謝! – srchulo

0

從文檔中,Q中的代碼是很好的。請嘗試用以下方式調試問題。這將允許你窺視物體內部,看看發生了什麼。

我的猜測:默認值被實際數據覆蓋或變量爲空。

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

哪個部分的文檔說這個問題很好?我找不到任何證實我做過的事情。 – srchulo