smarty中foreach和section的用法及实例

1、section中的属性

name:(必选) 是section循环的名称只是标示循环唯一的名字没有特别意义,前面没有$符号;

loop: (必选)是在php声明中的变量名称,用来标示是循环哪一个数组(即要循环数组名)需要使用$;

start: (可选)循环执行的初始位置。如果该值为负数,开始位置从数组的尾部算起。例如:如果数组中有7个元素,指定start为-2,那么指向当前数

组的索引为5。非法值(超过了循环数组的下限)将被自动调整为最接近的合法值。

step: (可选)如其它语言的循环,是一个步长,如果为负数,则倒序循环;

max:(可选)循环的最大下标,如果是1则只循环1次,如果为2则循环2次;

show:(可选)默认为true即显示。如果设置了{sectionelse},表示如果数组没有内容的时候显示这部分的内容;如果show为false则显示这部分。

如果没有设置{sectionelse}则不输出该数组。

2.foreach中的属性

from:(必选)循环访问的数组,需要使用$;

item:(必选)当前元素的变量名,不需要使用$

key:(可选)当前键名的变量名,不需要使用$

name:(可选)用于访问foreach属性的foreach循环的名称,不需要使用$。

3.实例

(1)程序部分内容

$list = array();
foreach($comment_list2 as $comment=>$comment_value){
$company = $company_list[$comment];
$cat_config->initById($company->category_id);	
$company_url = "/".$cat_config->getVirtualPath()."/task_view/id_".$company->id.".html";
$company_object = array();
$company_object["icon"] = $cat_config->getIcon();
$company_object["company_url"] = $company_url;
$title = $company->cname;
if(strlen($company->ename) > 0)
{
    $title .= strlen($company->cname) > 0 ? " - ". $company->ename : $company->ename;
}
$company_object["title"] = $title;
foreach($comment_value as $value)
{
    $company_object["comment_infos"][] = array("comment"=>$value->comment,"indate"=>$value->indate,"rate"=>$value->rate/2);
}
$company_object["rate"] = $company_object["comment_infos"][0]["rate"];
$list[] = $company_object;
}
$smarty->assign("comments", $list);
(2)模板页面内容

a.用section实现

{section name=comments loop=$comments}
<dt class="company"><img src="/images/{$comments[comments].icon}" border="0" height="15"><a href="{$comments[comments].company_url}" target="_blank" title="{$comments[comments].title}" class="link">{$comments[comments].title|truncate:40}</a></dt>
{section name=comments2 loop=$comments[comments].comment_infos}
<dd class="comment_by"><img src='{$mosConfig_image_site}/images/star/{$comments[comments].comment_infos[comments2].rate}.0.gif'> Review at {$comments[comments].comment_infos[comments2].indate|date_format:"%D"}</dd>
<dd class="comment">{$comments[comments].comment_infos[comments2].comment|truncate:60}</dd>
{/section}
{sectionelse}
<dd class="comment">{$L_COMPANY_REVIEW_NONE}</dd>
{/section}

b.用foreach实现

{foreach from=$comments item=v}
<dt class="company"><img src="/images/{$v.icon}" border="0" height="15"><a href="{$v.company_url}" target="_blank" title="{$v.title}" class="link">{$v.title|truncate:40}</a></dt>
{foreach from=$v.comment_infos item=v1}
<dd class="comment_by"><img src='{$mosConfig_image_site}/images/star/{$v1.rate}.0.gif'> Review at {$v1.indate|date_format:"%D"}</dd>
<dd class="comment">{$v1.comment|truncate:60}</dd>
{/foreach}
{foreachelse}
<dd class="comment">{$L_COMPANY_REVIEW_NONE}</dd>
{/foreach}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值