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' }, ... );

'defaults'ショートカットを使用して、フィールドを動的に更新することもできます。

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

'init_object'はデータベース行(item)の代わりに機能するため、' item'も渡す場合は、'use_init_obj_over_item'フラグも設定する必要があります。オブジェクト/フォームの「値」形式を使用します。これには、ネストされたハッシュ参照と配列参照が含まれます。'defaults' hashrefには、'fif'(fill-in-form)メソッドから取得するようなフラット化されたhashrefが必要です。

https://metacpan.org/module/HTML::FormHandler::Manual::Defaultsを参照してください

于 2013-02-05T17:42:29.833 に答える
0

docs から、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 に答える