アプリ版:「スタンプのみでお礼する」機能のリリースについて

PerlモジュールのHTML::Templateを利用していますが、多重ループの書き方がわかりません。

以下のようなループがある場合、どのようにperlを記述したらいいでしょうか。

<TMPL_LOOP NAME=LOOPA>
<TMPL_VAR NAME=title>
<TMPL_LOOP NAME=LOOP_GUEST>
<TMPL_VAR NAME=guest_name>
</TMPL_LOOP>
<TMPL_VAR NAME=time>
</TMPL_LOOP>

ドキュメントを見ると下記のように記述するようですが、下記を値それぞれではなく、配列を利用する場合にはどのように記述すれば良いでしょうか。


$template->param(LOOP => [
{ name => 'Bobby',
nicknames => [
{ name => 'the big bad wolf' },
{ name => 'He-Man' },
],
},
],
);

A 回答 (1件)

中盤の意味を掴みかねましたが、とにかく上記のテンプレートへ出力出来る構造体を考えてみます。



$template->param(
LOOPA => [
{ # ここから
title =>"TITLE1",
LOOP_GUEST => [
{guest_name => "NAME1"},
{guest_name => "NAME2"}
],
time => "TIME1"
}, # ここまでがLOOPAの一つの要素
{ # ここからは二つ目
title =>"TITLE2", # LOOPA内のTMPL_VAR titleで取り出せるtitle
LOOP_GUEST => [ # ここからLOOPA内のLOOP_GUESTの要素
{guest_name => "NAME1"}, # LOOP_GUESTの要素の一つ
{guest_name => "NAME2"} # TMPL_VAR guest_nameで取り出せるguest_nameをセットしている
], # ここまでがLOOP_GUEST
time => "TIME2"
}
]
);

なんとなく、わかったでしょうか?

要するに、TMPL_LOOPの部分はハッシュリファレンスの配列のリファレンスがセットされている必要があって、ループ内で配列の中身が一つ一つ展開され、その中で利用出来るテンプレート変数がハッシュリファレンスの内容のハッシュになっている、と。多重ループであっても、同じことの繰り返しです。

参考までに、ドキュメントの構造体を出力するテンプレートは

<TMPL_LOOP NAME=LOOP>
<TMPL_VAR NAME=name>
<TMPL_LOOP NAME=nicknames>
<TMPL_VAR NAME=name>
</TMPL_LOOP>
</TMPL_LOOP>

とかになると思います。

まぁともかく、いろいろ実験して体得してみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!