名前¶
HTML::FillInForm - HTML フォームにCGIデータをすまわせる
説明¶
このモジュールは、前のページのHTMLフォームからのデータを HTMLの input や textarea や select タグに自動的に挿入します。 HTML::Parserのサブクラスであり、HTML::ParserでHTMLを解析し、値をフォームタグに挿入します。
有益な適用例の一つはユーザーが必須項目を埋めずにサブミットした後です。 HTML::FillInForm はサブミットされた情報をすべてフォーム要素に含めて、 HTMLフォームを再表示することができます。
概要¶
This examples fills data into a HTML form stored in $htmlForm
from CGI parameters that are stored in $q
. For example, it will set the value of any "name" textfield to "John Smith".
この例では、$htmlForm
に入っているHTMLフォームに、$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);
メソッド¶
- new
-
new()
を呼ぶと、新しいFillInForm オブジェクトを生成します:$fif = new HTML::FillInForm;
- fill
-
$html
に含まれるHTMLフォームを埋めます:$output = $fif->fill(scalarref => \$html, fobject => $q);
$q
からのデータで、$hrml
に含まれるHTMLフォームが埋められたものが返ります。$q
はCGIモジュールのparam
のように働くparam()
メソッドを持っている必要があります。$output = $fif->fill(scalarref => \$html, fobject => [$q1, $q2]);
1.04より、渡されるオブジェクトは引数なしのparam()の呼び出しで、 全てのキーを返す必要はありません。
配列リファレンスで複数のオブジェクトを渡すこともできます。
$output = $fif->fill(scalarref => \$html, fdat => \%fdat);
%fdat
からのデータで、$html
に含まれるHTMLフォームが埋められたものが返ります。 配列リファレンスを使って、%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');
次のものを含むフォームしか埋めません。
<FORM name="form1"> ... </FORM>
注意して下さい。このメソッドは、デフォルトでパスワードフィールドを埋めます。 無効にするには、次のものを渡して下さい。
fill_password => 0
いくつかのフィールドを埋めるのを無効にしたいなら、
ignore_fields
オプションを使って下さい:$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 コンストラクタにオプションに加えることを示唆します。パッチを歓迎します。
他のモジュールからの呼び出し¶
Apache::PageKit¶
Apache::PageKitで、HTML::FillInFormを使うのは簡単です。 <form>タグを含むいくつかのページのために、自動的に呼ばれます。 fill_in_form
設定オプションを使うことで有効か無効にできます。
Apache::ASP v2.09 and above¶
HTML::FillInFormは、いまや、Apache::ASPに統合されています。次のようにすれば有効になります。
PerlSetVar FormFill 1
$Response->{FormFill} = 1
HTML::Mason¶
HTML::MasonからHTML::FillInFormを使うことは、masonhq.comのウェブサイトの FAQでカバーされています。 http://www.masonhq.com/docs/faq/#how_can_i_integrate_html_fillin
バージョン¶
このドキュメントは、HTML::FillInFormモジュール versin 1.04 について説明しています。
セキュリティ¶
ページにパスワードフィールドがある場合、キャッシュの問題を思いつくかもしれません。 次のURLにこの問題についての議論があります。
http://www.perlmonks.org/index.pl?node_id=70482
要約すれば、ブラウザにはCGIスクリプトの出力をキャッシュするものがあり、 Expires ヘッダをセットすることでこれをコントロールできます。 たとえば、CGI.pmで -expires
を使ったり、 Apache::PageKitの Config.xml ファイルのbrowser_cashe
を noにセットすることで、キャッシュをコントロールできます。
翻訳¶
加藤敦がドキュメントを日本語に翻訳しています。次のURLから利用できます
http://perldoc.jp
バグ¶
どんなバグレポートも、[email protected] に提出してください。
NOTES¶
Perl 5.005 と HTML::Parser version 3.26 を必要とします。
HTMLとPerlコードを結びつけることをせずにCGIデータをHTMLフォームに挿入できたかったので、 このモジュールを書きました。 CGI.pmと Embperlは、CGIデータをフォームに挿入することを可能にしますが、 HTMLとPerlをミックする必要があります。
著者¶
(c) 2004 TJ Mather, Maxmind LLC, [email protected]
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 http://www.maxmind.com/app/opensourceservices for more details.
SEE ALSO¶
HTML::Parser, Data::FormValidator, HTML::Template, Apache::PageKit
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!
翻訳について¶
翻訳者:加藤敦 ([email protected])
Perlドキュメント日本語訳 Project にて、 Perlモジュール、ドキュメントの翻訳を行っております。
http://sourceforge.jp/projects/perldocjp/
http://www.freeml.com/ctrl/html/MLInfoForm/[email protected]
http://perldoc.jp