November 04, 2004

HTML::TemplateとCGI.pmの連動

今更ながら、HTML::Templateのドキュメントをきちんと読んでみたところ、こんなオプションを発見。

http://perldoc.jp/docs/modules/HTML-Template-2.6/HTML/Template.pod

associate - このオプションは他のオブジェクトからパラメータ値を 継承することを可能にします。 他のオブジェクトへの唯一の必要事項は、 HTML::Template のように機能する param() メソッドを持っていることです。 よい候補は CGI.pm の query オブジェクトです。例:

  my $query = new CGI;
  my $template = HTML::Template->new(filename => 'template.tmpl',
                                     associate => $query);

そして $template->output() は以下のようになります:

  $template->param('FormField', $cgi->param('FormField'));

のように $cgi->param() メソッドにより提供されるであろう キー/値のペアがそれぞれ指定されたかのように動きます。 直接指定したパラメータは associate されたパラメータよりも優先されます。

associate オプションに無名配列を渡すことにより複数のオブジェクトを 関連付けるように指定することが出来ます。 それらは指定した順序でパラメータが検索されます:

・・・・・・うーむ。
ちょっとだけ車輪の再発明が無駄に思えた瞬間でした。こんな風に動作するものをいくつ作ったことか・・( ´_ゝ`)

てか、ドキュメントはちゃんと読もうね。>自分

Perl Template Toolkit、早く翻訳されないかなぁ・・。



この記事へのトラックバックURL

http://app.blog.livedoor.jp/cpiblog00035/tb.cgi/8876509