プロが教えるわが家の防犯対策術!

list.tpl

{foreach from=$data key=key item=row loop=test}
<tr><td>{$row.name}</td>:<td>{$row.kokugo}</td><td>{$row.sansu}</td></tr>
{/foreach}

-----

index.tpl(一部)

<h2>男の子</h2>
{include file=list.tpl}

<h2>女の子</h2>
{include file=list.tpl}

-----

index.php(一部)

$Smarty -> assign( "data", $boy );
$Smarty -> assign( "data", $girl );

$Smarty -> display( 'index.tpl' );

(実際にこの書き方は間違っていますが…)
index.php から index.tpl を display したいのですが、
この中で使うリストを、使いまわしたいと考えています。
こういうやり方はそもそも可能なのでしょうか?
たしかに boylist.tpl 、 girllist.tpl とし中の割当変数を
$boy 、 $girl に変えればいいのですが、
将来変更が加わった際に両方変えなければなりません。
今回は例なので男女ですが、もっと多くの要素が出て来た時に
厄介なことになるように思います。

何か解決方法はありませんでしょうか?

A 回答 (1件)

fetch を使ってみてはいかがでしょうか?


多少書き方は変わりますが…

index.tpl 内を

<h2>男の子</h2>
{$boyposition}

<h2>女の子</h2>
{$girlposition}


とします。

index.php 内で

$Boy = new Smarty();
$Girl = new Smarty();

として

$Boy -> assign( "data", $boy );
$boyhtml = $Boy -> fetch( "test.tpl" );

$Girl -> assign( "data", $girl );
$girlhtml = $Girl -> fetch( "test.tpl" );

$Smarty -> assign( "boyposition", $boyhtml );
$Smarty -> assign( "girlposition", $girlhtml );

これでいけそうな気がしますがいかがでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます !!
この方法で大丈夫でした !!

お礼日時:2013/06/02 22:45

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