• 締切済み

Smartyの html_table でセル内の値にリンクを張る方法

タイトルの通りなのですが、配列をhtml_tableで表示する際に各データにリンクを張りたいのですが、html_tableではサポートされていません。 そこで{section}を使用してやろうと思ったのですがうまくいきません。 データの量は不定で1行5カラムで横に表示して行って次の行に続く感じで表示したいのですが、縦に一覧表示され同じカラムが5個並んだ表しか出来ません。{counter}でウマくいけるような気もしたのですが、だんだん混乱してきたのでここにお願いします。 <table> {section name=product loop=$data}  <tr bgcolor="{cycle values="#FFFFFF,#EFEFEF"}"      style="font-size:small">   <td><a href="test.php?name={$data[product]}">       {$data[product]}</a></td>   <td><a href="test.php?name={$data[product]}">       {$data[product]}</a></td>   <td><a href="test.php?name={$data[product]}">       {$data[product]}</a></td>   <td><a href="test.php?name={$data[product]}">       {$data[product]}</a></td>   <td><a href="test.php?name={$data[product]}">       {$data[product]}</a></td>  </tr> {/section} </table>

みんなの回答

  • uki629
  • ベストアンサー率23% (40/172)
回答No.1

とりあえずsectionを使ったサンプル作ってみた。 PHP側 $data = array('abc','123','あいうえお','<a href="http://google.com">Google</a>','aaaaa','bbb'); $smarty->assign('contacts', $data); $smarty->assign('ContactsCnt', count($data)); HTML側 <table border="1" cellpadding="3" cellspacing="0"> <tr> {section name=cell loop=$contacts} <td>{$smarty.section.cell.index+1}:{$contacts[cell]}</td> {if $ContactsCnt != $smarty.section.cell.index+1 && (($smarty.section.cell.index+1) % 2) == 0} </tr><tr> {/if} {/section} </tr> </table> ただ質問者の内容html_tableで十分にできる。 PHP側にあるように変数内に成形したhtmlを直接突っ込んでおく。

lovehiroko
質問者

お礼

回答ありがとうございます。 データにリンクを埋めるのは、データの再利用をする上で邪魔な気がするので極力避けたいと思っていました。 で質問を出した後に色々試していたら自己解決できました。 以下の感じです。 <table> {counter start=0 assign="cnt"} {section name=product loop=$data step=5} <tr bgcolor="{cycle values="#FFFFFF,#EFEFEF"}" > <td><a href="./kanri_prod.php?devl={$data[$cnt]}">{$data[$cnt]}</a> {counter} </td> <td><a href="./kanri_prod.php?devl={$data[$cnt]}">{$data[$cnt]}</a> {counter} </td> <td><a href="./kanri_prod.php?devl={$data[$cnt]}">{$data[$cnt]}</a> {counter} </td> <td><a href="./kanri_prod.php?devl={$data[$cnt]}">{$data[$cnt]}</a> {counter} </td> <td><a href="./kanri_prod.php?devl={$data[$cnt]}">{$data[$cnt]}</a> {counter} </td> </tr> {/section} </table> 大変お騒がせいたしました。

関連するQ&A