smarty section 循环变量自动生成问题.

klggg 2005-03-29 07:33:11
模板内容
<TABLE WIDTH="100%" BORDER="1">
<TR>
<{section name=sec1 loop=$infoArray}>
<TD><{$infoArray[sec1].info_id}></TD>
<TD><{$infoArray[sec1].info_title}></TD>
<{if $smarty.section.sec1.rownum is div by $numbofbr}>
</tr>
<tr>
<{/if}>
<{/section}></TR>
</TABLE>

相关程序
$smarty->assign("infoArray", array(
array("info_id" => "1", "info_title" => "info_title1")
,array("info_id" => "2", "info_title" => "info_title2")
,array("info_id" => "3", "info_title" => "info_title3")
,array("info_id" => "3", "info_title" => "info_title3")
,array("info_id" => "4", "info_title" => "info_title4")
,array("info_id" => "5", "info_title" => "info_title5")
));

问题
我这里有三个$infoArray要显示,
那模板
<{section name=sec1 loop=$infoArray}>
可以设制成这样
<{section name=sec1 loop=$infoArray1}>
<{section name=sec1 loop=$infoArray2}>
<{section name=sec1 loop=$infoArray3}>

程序改成
$smarty->assign("infoArray1", array
$smarty->assign("infoArray2", array
$smarty->assign("infoArray3", array

但如果我这里的infoArray 不固定呢
修改模板成这样
<{section name=sec1 loop=$infoArray`$block.id`}>
意思根据传替的id自动生成类似
<{section name=sec1 loop=$infoArray1}>
这样的模板变量,但我发现这样smarty编译时提示出错.
请问这个问题应该怎么解决。
...全文
459 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
klggg 2005-03-30
  • 打赏
  • 举报
回复
我现在是这样做。查考了网上的代码,但总感觉不太方便。
//模板
<{section name=sec1 loop=$forum}>
<tr>
<td><{$forum[sec1].category_name}>
<{include file="blocktest`$forum[sec1].category_id`.tpl"}>




</td>
</tr>

<{/section}>


//程序
$testArray1 = array(
array("topic_id" => 1, "topic_name" => "站務公告")
);
$testArray2 = array(
array("topic_id" => 2, "topic_name" => "好書介紹"),
array("topic_id" => 3, "topic_name" => "奇文共賞")
);
$testArray3 = array(
array("topic_id" => 4, "topic_name" => "硬體週邊"),
array("topic_id" => 5, "topic_name" => "軟體討論")
);

$forum = array(
array("category_id" => 1, "category_name" => "公告區",
"topic" => $testArray1
),
array("category_id" => 2, "category_name" => "文學專區",
"topic" => $testArray2
),
array("category_id" => 3, "category_name" => "電腦專區",
"topic" => $testArray3
)
);
$smarty->assign("forum", $forum);
lawyu 2005-03-30
  • 打赏
  • 举报
回复
不是什么好方法,也没有环境测试是否可行
lawyu 2005-03-30
  • 打赏
  • 举报
回复
我想可以把‘$infoArray1’,‘$infoArray2’,‘$infoArray3’在程序的页面里做为另一个数组的内容assign到一个模版变量b里,在程序里应该可以很容易的把infoArrayX用字符串来处理
这样在模板里
<section name=a loop=$b>
<{section name=sec1 loop=$b[a]}>
</section>
这样就应该能生成你要的
<{section name=sec1 loop=$infoArray1}>
<{section name=sec1 loop=$infoArray2}>
<{section name=sec1 loop=$infoArray3}>
klggg 2005-03-30
  • 打赏
  • 举报
回复
有人知道吗?在线等待呀

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧