=encoding euc-jp
=head1 名前
HTML::FillInForm - HTML フォームにCGIデータをすまわせる
=head1 説明
このモジュールは、前のページのHTMLフォームからのデータを HTMLの input や textarea や select タグに自動的に挿入します。
Lのサブクラスであり、HTML::ParserでHTMLを解析し、値をフォームタグに挿入します。
有益な適用例の一つはユーザーが必須項目を埋めずにサブミットした後です。
HTML::FillInForm はサブミットされた情報をすべてフォーム要素に含めて、
HTMLフォームを再表示することができます。
=head1 概要
This examples fills data into a HTML form stored in C<$htmlForm> from CGI parameters that are stored
in C<$q>. For example, it will set the value of any "name" textfield to "John Smith".
この例では、C<$htmlForm> に入っているHTMLフォームに、C<$q>の中に入っているCGIパラメータを埋めます。
たとえば、以下では、どの"name"テキストフィールドの値も"John Smith"になります。
my $q = new CGI;
$q->param("name","John Smith");
my $fif = new HTML::FillInForm;
my $output = $fif->fill(scalarref => \$html,
fobject => $q);
=head1 メソッド
=over 4
=item new
C を呼ぶと、新しいFillInForm オブジェクトを生成します:
$fif = new HTML::FillInForm;
=item fill
C<$html>に含まれるHTMLフォームを埋めます:
$output = $fif->fill(scalarref => \$html,
fobject => $q);
C<$q>からのデータで、C<$hrml>に含まれるHTMLフォームが埋められたものが返ります。
C<$q>はCGIモジュールのCのように働くCメソッドを持っている必要があります。
$output = $fif->fill(scalarref => \$html,
fobject => [$q1, $q2]);
1.04より、渡されるオブジェクトは引数なしのparam()の呼び出しで、
全てのキーを返す必要はありません。
配列リファレンスで複数のオブジェクトを渡すこともできます。
$output = $fif->fill(scalarref => \$html,
fdat => \%fdat);
C<%fdat>からのデータで、C<$html>に含まれるHTMLフォームが埋められたものが返ります。
配列リファレンスを使って、C<%fdat>を使う複数の値を渡せます。
代わりに、次のようにもできます。
$output = $fif->fill(arrayref => \@array_of_lines,
fobject => $q);
および、
$output = $fif->fill(file => 'form.tmpl',
fobject => $q);
HTMLに複数のフォームがあり、二つのうち一つのフォームにしか値を入れたくなければ、
ターゲットを特定できます。
$output = $fif->fill(scalarref => \$html,
fobject => $q,
target => 'form1');
次のものを含むフォームしか埋めません。
注意して下さい。このメソッドは、デフォルトでパスワードフィールドを埋めます。
無効にするには、次のものを渡して下さい。
fill_password => 0
いくつかのフィールドを埋めるのを無効にしたいなら、
Cオプションを使って下さい:
$output = $fif->fill(scalarref => \$html,
fobject => $q,
ignore_fields => ['prev','next']);
Note that this module does not clear fields if you set the value to undef.
It will clear fields if you set the value to an empty array or an empty string. For example:
このモジュールは、値にundefをセットしてもフィールドをクリアしません。
空の配列か空の文字列を値にセットすれば、フィールドはクリアされます。例えば:
# フォーム要素の foo はそのままで、いじられません
$output = $fif->fill(scalarref => \$html,
fdat => { foo => undef });
# フォーム要素のfoo はクリアされます
$output = $fif->fill(scalarref => \$html,
fdat => { foo => "" });
It has been suggested to add a option to the new constructer to change the behavior
so that undef values will clear the form elements. Patches welcome.
undef の値がフォーム要素をクリアするように、この振る舞いを変更するため、
new コンストラクタにオプションに加えることを示唆します。パッチを歓迎します。
=back
=head1 他のモジュールからの呼び出し
=head2 Apache::PageKit
Lで、HTML::FillInFormを使うのは簡単です。