=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を使うのは簡単です。
タグを含むいくつかのページのために、自動的に呼ばれます。 C設定オプションを使うことで有効か無効にできます。 =head2 Apache::ASP v2.09 and above HTML::FillInFormは、いまや、Apache::ASPに統合されています。次のようにすれば有効になります。 PerlSetVar FormFill 1 $Response->{FormFill} = 1 =head2 HTML::Mason HTML::MasonからHTML::FillInFormを使うことは、masonhq.comのウェブサイトの FAQでカバーされています。 L =head1 バージョン このドキュメントは、HTML::FillInFormモジュール versin 1.04 について説明しています。 =head1 セキュリティ ページにパスワードフィールドがある場合、キャッシュの問題を思いつくかもしれません。 次のURLにこの問題についての議論があります。 http://www.perlmonks.org/index.pl?node_id=70482 要約すれば、ブラウザにはCGIスクリプトの出力をキャッシュするものがあり、 Expires ヘッダをセットすることでこれをコントロールできます。 たとえば、Lで C<-expires> を使ったり、 Lの Config.xml ファイルのCを Iにセットすることで、キャッシュをコントロールできます。 =head1 翻訳 加藤敦がドキュメントを日本語に翻訳しています。次のURLから利用できます http://perldoc.jp =head1 BUGS どんなバグレポートも、tjmather@maxmind.com に提出してください。 =head1 NOTES Perl 5.005 と L version 3.26 を必要とします。 HTMLとPerlコードを結びつけることをせずにCGIデータをHTMLフォームに挿入できたかったので、 このモジュールを書きました。 CGI.pmと Embperlは、CGIデータをフォームに挿入することを可能にしますが、 HTMLとPerlをミックする必要があります。 =head1 著者 (c) 2004 TJ Mather, Maxmind LLC, tjmather@maxmind.com All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Paid support is available from directly from the author of this package. Please see L for more details. =head1 SEE ALSO L, L, L, L =head1 CREDITS 修正、バグレポート、ドキュメントが、以下の方々により寛大に提供されました: Tatsuhiko Miyagawa Boris Zentner Dave Rolsky Patrick Michael Kane Ade Olonoh Tom Lancaster Martin H Sluka Mark Stosberg Jonathan Swartz Trevor Schellhorn Jim Miner Paul Lindner Maurice Aubrey Andrew Creer Joseph Yanni Philip Mak Jost Krieger Gabriel Burka Bill Moseley James Tolley Dan Kubb Thanks! =head1 翻訳について 翻訳者:加藤敦 (ktat.is@gmail.com) Perlドキュメント日本語訳 Project にて、 Perlモジュール、ドキュメントの翻訳を行っております。 http://sourceforge.jp/projects/perldocjp/ http://www.freeml.com/ctrl/html/MLInfoForm/perldocjp@freeml.com http://perldoc.jp