ぱるも日記

ぱるも日記は id:palmo がプログラミング言語 Perl を1から勉強していく日記です。

2006-07-17

HTML::Template(4) TMPL_IF

HTML::Templateテンプレートタグの勉強です。

今回は、テンプレートの中で条件分岐をする為の <TMPL_IF> タグについて勉強します。


使い方は http://d.hatena.ne.jp/palmo/20060715/htmpl3:TMPL_LOOP とほとんど同じで、NAME 属性で「条件」として使う値を指定します。指定した条件の値は、Perl と全く同じように真偽判定されます。例えば「空の文字列」や「数字の 0」、「未定義(undef)」だったりすると「偽」、それ以外なら「真」として判定されるわけですね。

条件が真として判定された場合、<TMPL_IF> という開始タグと、</TMPL_IF> という終了タグで挟みこんだ部分が表示されます。逆に、偽になった場合は全く表示されません。

例えば、このようなテンプレートを書いたとして

<TMPL_IF NAME="TITLE">
  <h1><TMPL_VAR NAME="TITLE"></h1>
</TMPL_IF>

Perl スクリプト側で、param メソッドを使って「TITLE」の値を設定すると

$tmpl->param( TITLE => "Hello, world!" );

TMPL_IF の条件は「真」として判定されるので、TMPL_IF の中身が表示されて

  <h1>Hello, world!</h1>

と出力されます。

逆に TITLE に何も設定しなかったり、TITLE に「偽」として判定される値を設定すると、何も表示されなくなります。

また、条件の真偽を逆にする「TMPL_UNLESS」も存在するので、「値が無い場合」にだけ出力する、という事も可能ですね。(^_^)


さらに、「TMPL_ELSE」も存在します。Perl での if 文と同じく、条件が「偽」であった場合に出力されます。TMPL_IF で挟んだ部分の中で使う事ができます。

<TMPL_IF NAME="VALUE">
  <p>あなたが入力したのは「<TMPL_VAR NAME="VALUE">」です。</p>
<TMPL_ELSE>
  <p>入力してください。</p>
</TMPL_IF>

「VALUE」として設定した値が「真」だった場合は、その値を表示しますが、「偽」だった場合は「入力してください」と表示します。


とっても簡単ですね。条件分岐ができれば、テンプレートの表現の幅も広がるはずです。

HTML::Template を利用して、今度は少し実用的な CGI スクリプトを作ってみたいと思います。(^_^)

0YG4QwfpcZ0YG4QwfpcZ 2006/09/15 15:44 PWMF1aUUt0 5UFnzVm2J5YYsQ l4jBvZqwlSyDU

kotaekotae 2007/06/06 18:53 kotae

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/palmo/20060717/htmpl4