我在smarty模板中有以下代码:
{foreach from=$categories item=l}
<tr>----------START---------------</tr> <br/>
{$l.category_name|strip_tags}
{$l.sub_category}
{while $l.sub_category}
<td>{$l.category_name|strip_tags}</td>
{foreach from=$l.sub_category item=k}
<td>{$k.category_name|strip_tags}</td>
<br/>
{/foreach}
<br/>
{/while}
----------END---------------
<br/>
<br/>
{/foreach}
输出:
---------- START --------------- 教师与StaffArray
---------- END ---------------
---------- START --------------- PTA&amp;基础
---------- END ---------------
---------- START --------------- 丰富课程
---------- END ---------------
教师&amp;工作人员5年级6年级
PTA&amp;基金会
丰富课程
我希望打印出来:
---------- START --------------- 教师与人员
五年级五年级
---------- END ---------------
---------- START --------------- PTA&amp;基础
---------- END ---------------
---------- START --------------- 丰富课程
---------- END ---------------
似乎输出在for循环后打印。我是smarty模板的新手,并没有真正理解为什么会这样打印。
此外,我还有另一个问题:
{while $l.sub_category}
{foreach from=$l.sub_category item=k}
<br/>
{ $k.category_name|strip_tags }
{/foreach}
{ assign var=l value=$l.sub_category}
<br/>
{/while}
我想更新循环条件变量..但是我不确定我的分配方法是怎么做的。
任何建议表示赞赏。
答案 0 :(得分:1)
我认为问题可能在于您的表格结构,在输出td标签之前打开和关闭tr,然后某些浏览器会不按顺序显示内容。
应该是
{foreach cat loop}
<tr>
<td>
{while loop}
</td>
<td>
{foreach loop}
</td>
</tr>
{/close foreach loop}