=encoding euc-jp
=head1 名前
HTML::FillInForm - HTML フォームにCGIデータをすまわせる
=head1 説明
このモジュールは、前のページのHTMLフォームからのデータを HTMLの input や textarea や select タグに自動的に挿入します。
Lのサブクラスであり、HTML::ParserでHTMLを解析し、値をフォームタグに挿入します。
有益な適用例の一つは、ユーザーがHTMLフォームを、必要事項を埋めずにサブミットしたら、
HTML::FillInFormは、全てのフォーム要素がサブミットされた内容を含んでいる状態で、
HTMLフォームを再表示するのに使われえます。
=head1 概要
この例では、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]);
配列リファレンスとして複数のオブジェクトを渡すこともできます。
$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']);
=back
=head1 他のモジュールからの呼び出し
=head2 Apache::PageKit
Lで、HTML::FillInFormを使うのは簡単です。