###前提
前回の質問同様、リファクタリング中の社内業務システム(LAPP) の件になります。
別の業務システムで使ってる「PHPxSmarty」みたいにすらすらいけるかな、と学習機会のあったテンプレートエンジン「Template Toolkit」を採用しましたが、二日間ほどサンプルコードとネットのにらめっこの末力つき、、投稿いたします。
###実現したいこと
まずはサンプルコードを元にDBからのリスト取得と表示にトライしてみました。
テンプレートで単純に置換したいだけの変数は表示されますが
FOREACH での一覧 が表示されません。
取得内容はprint文で表示確認できているので
テンプレートへの渡し方、またはテンプレートの参照が間違っているのかな、と思います。
my ($row) = @$ary_ref;
が何をいれているのかも良くわからず、今更ながら力不足を実感中です。
実際にこれから何十と作り直す機能は、複数のクエリの結果をごにょごにょして画面出力するものばかりなので
こんな事もできずにどうするんだよ~、と気ばかり焦っています。
初歩もいいところですが、どなたかご教授ください。
よろしくお願いいたします。
[CGI側] --------------------------------------------------------------------------
:
接続
&db_con;
ステートメントハンドラの作成
our $sth = $dbh->prepare("SELECT * FROM staff;");
実行
$sth->execute() || die "Cannot execute statement : $sth->errstr\n";
取得データの処理
while (my $ary_ref = $sth->fetchrow_arrayref) {
my ($row) = @$ary_ref;
print "$ary_ref->[0], $ary_ref->[1]\n"; # テストプリントはOK
}
開放/切断
&db_discon;
テンプレートに変数をアサイン
my $vars = {
system => "$SYSTEM",
sname => "$sname",
cmpmsg => "$cmpmsg",
errmsg => "$errmsg",
row => "$row",
};
$tt->process('template/msg.html', $vars) || die "Template process failed : $tt->error\n";
[TEMPLATE側] --------------------------------------------------------------------
[% INCLUDE 'template/header.inc' %]
[% IF errmsg %]
<!-- 異常終了 --> <p><input type="button" class="btn btn-default btn-lg" value="戻る" onClick="history.back()"></p> <div class="panel panel-danger"> <div class="panel-heading"> [% sname %]</div> <div class="panel-body"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> [% errmsg %]</div> </div>[% ELSIF cmpmsg %]
<!-- 正常終了 --> <p><input type="button" class="btn btn-default btn-lg" value="戻る" onClick="history.back()"></p> <div class="panel panel-success"> <div class="panel-heading"> [% sname %]</div> <div class="panel-body"><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span> [% cmpmsg %]</div> </div>[% ELSE %]
<!-- 出力テスト --> <table class="table table-bordered"> <tr><th>社員コード</th><th>名前</th></tr> [% FOREACH res IN row %] <tr><td>[% res.0 %]</td><td>[% res.1 %]</td></tr> [% END %] </table>[% END %]
[% INCLUDE 'template/footer.inc' %]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/06 06:50
退会済みユーザー
2015/10/06 08:07