[Perl] => [CGI]
HTML::Templateを使用すればHTMLファイルをテンプレートから読み込むことができるようになりますので、スクリプトとHTMLを切り離すことができるようになります。HTML::Templateが読み込みテンプレートファイルでは、変数を入れるために以下のようなタグを使用できます。
<TMPL_VAR> <TMPL_LOOP> <TMPL_INCLUDE> <TMPL_IF> <TMPL_ELSE> <TMPL_UNLESS>
#テンプレートタグの使用例 <TMPL_VAR NAME=変数名>
[TMPL_VAR 使用例]
use HTML::Template;
#HTML::Templateオブジェクトの作成。HTML::Templateではテンプレートに
#存在しない変数に値を設定しようとすると、デフォルトでdieするので、
#オプションdie_on_bad_paramsを0にすると便利。
my $template = HTML::Template->new(filename => './template.html', die_on_bad_params => 0);
#HTMLテンプレートに設定されているパラメータを読み込み
my @template_param = $template->param();
#テンプレートの変数それぞれに値を入れる
foreach my $key (@template_param) {
$template->param( $key => $db_ref->{$key} );
}
#ヘッダーを出力
print $session->header(-charset=>'EUC-JP');
#結果を出力
print $template->output;
[TMPL_LOOP 使用例]
<TMPL_LOOP NAME=trial>
<tr>
<td><TMPL_VAR NAME=cname></td>
<td><TMPL_VAR NAME=company></td>
<td><TMPL_VAR NAME=email></td>
<td><TMPL_VAR NAME=tel></td>
<td><TMPL_VAR NAME=order_date></td>
<td><TMPL_VAR NAME=expire></td>
</tr>
</TMPL_LOOP>
my @trial;
while (my $data = $sth->fetchrow_hashref) {
push(@trial, $data);
}
my $template = HTML::Template->new(filename => $tmpl_file);
$template->param( 'trial' => \@trial ); #データはリファレンスで渡す
[補足] FORMのSELECTに関してはTMPL_VARとpopup_menu()を使用するのがもっともよいらしい。TMPL_IFなどでは条件が複雑になるので、逆にソースが見づらくなります。
$template->param( $key => popup_menu(-name => $key, -values => ['Standard', 'Pro'], defalut => $db_ref->{$key}) );
テンプレートにて使用する変数は大文字小文字の区別をしないため、これを区別するようオブジェクトを作成する際に、case_sensitive => 1をセットすることをおすすめします。
[参考記事]
popup_menu - HTMLの選択フィールドを表示する
関連記事
HTML::Template
Apache::ASP
CGI::Session - セッション管理
CGI - ヘッダーを出力する
シェルからCGIにパラメータを渡す
radio_group - ラジオボタンを表示
checkbox_group() - チェックボックスを表示する
エラーをブラウザーに表示するには - CGI::Debug
URLエンコードするには
リダイレクト
popup_menu - HTMLの選択フィールドを表示する
キャッシュを無効にするには
CGI::Cookie - クッキーの取得及び設置
CGIモジュール - フォームの値を取得
Apache::ASP
CGI::Session - セッション管理
CGI - ヘッダーを出力する
シェルからCGIにパラメータを渡す
radio_group - ラジオボタンを表示
checkbox_group() - チェックボックスを表示する
エラーをブラウザーに表示するには - CGI::Debug
URLエンコードするには
リダイレクト
popup_menu - HTMLの選択フィールドを表示する
キャッシュを無効にするには
CGI::Cookie - クッキーの取得及び設置
CGIモジュール - フォームの値を取得
広告