HTML-FillInForm-1.04 > HTML::FillInForm

名前

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_cashenoにセットすることで、キャッシュをコントロールできます。

翻訳

加藤敦がドキュメントを日本語に翻訳しています。次のURLから利用できます

http://perldoc.jp

バグ

どんなバグレポートも、tjmather@maxmind.com に提出してください。

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, 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 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!

翻訳について

翻訳者:加藤敦 (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