ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

smarty 中foreach 循环语句详解

2022-06-09 23:35:07  阅读:164  来源: 互联网

标签:index name smarty 循环 foreach TRUE 详解


{foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其中"name"是name属性。

<{foreach $items as $r name=row_name }>
.index包含当前数组索引,从零开始,每次循环增长1
<{if $smarty.foreach.row_name.index%2==0}>        

这段是判断是否为 偶数 行

.iteration包含当前循环次数,与index不同,从1开始,每次循环增长1 
<{$smarty.foreach.foo.iteration}>
.first在当前{foreach}循环处于初始位置时值为TRUE 
<{if $smarty.foreach.row_name.first==true}>

这段是判断是否为 第一行

.last在当前{foreach}循环处于最终位置是值为TRUE
<{if $smarty.foreach.row_name.last==true}>

这段是判断是否为 最后行

常用 smarty 中 foreach 循环语句 示例

一、输出全表

 <table  id="table_excel" style="display:none;" > <!-- 显示 block -->
    <{foreach $items as $r name=row_name}>
        <tr>
            <{foreach from=$r item=val name=col_name}>
                <th><{$val}></th>     
            <{/foreach}>  
         </tr>
    <{/foreach}>
 </table>

二、第一行变化样式

<table  id="table_main" class="blue-table"  >  <!-- blue-table style="width:6000px;" style="width:90%;"  style="table-layout:fixed; " -->
    <caption  style="color:#007979;font-size:18px;" >数据表</caption>
 
        <{foreach $items as $r name=row_name}>
          <tr>
            <{foreach from=$r item=val name=col_name}>
                <{if $smarty.foreach.row_name.index eq 0}> <!-- 第0行 -->
                 
                    <{if $smarty.foreach.col_name.index eq 0}>   <!-- 第0列 工作项目   style="width:200px;" -->
                        <th class="col-11" style="width:100px;" ><{$val}></th> 
                    <{else if $smarty.foreach.col_name.index eq 1}>   <!-- 第1列 办事处  style="width:100px;"-->
                        <th class="col-11" style="width:80px;"  ><{$val}></th> 
                    <{else}>
                        <th class="col-11" style="width:80px;"><{$val}></th>     
                    <{/if}>

                <{else if $smarty.foreach.row_name.index eq 1}>  <!-- 第1行 style="min-width:30px;"-->
                    <{if $smarty.foreach.col_name.index eq 0}>
                        <th class="col-7" ><{$val}></th> 
                    <{else if $smarty.foreach.col_name.index eq 1}>
                        <th class="col-7" ><{$val}></th> 
                    <{else }>
                        <th class="col-7" ><{$val}></th>     
                     <{/if}>
                <{else }>
                    <th class="col-7" > <{$val}> </th>
                <{/if}>
            <{/foreach}>  
          </tr>
        <{/foreach}>
 </table>

效果

三、判断列表中某个值是否满足条件,来变化样式

<{foreach $items as $r name=row_name}>
     <{if $r['is_display_list'] eq "是" }>
          <th field="<{$r['field_name']}>" width="<{$r['display_list_width']}>" align='center'><{$r['field_display_name']}></th> 
     <{else }>
          <th field="<{$r['field_name']}>"  hidden='true'><{$r['field_display_name']}></th> 
     <{/if}>
<{/foreach}> 

四、输出多行两列

<{foreach $items as $r name=row_name }>
                    
    <{if $smarty.foreach.row_name.index%2==0}>            
        <tr>
   <{/if}>
                        
     <td><label for="<{$r['id']}>" class="control-label"><{$r['field_display_name']}>:</label></td> 
      <td><{$r['html']}> </td>  
                      
   <{if $smarty.foreach.row_name.index%2!=0}>
       </tr>
   <{else}>
       <{if $smarty.foreach.row_name.last==true}>
           </tr>
       <{/if}>
   <{/if}>
<{/foreach}> 

输出的html

<tr>                    
    <td><label for="" class="control-label">支持协议:</label></td> 
    <td><input type="text"   class='my_input' name="agreement" id="agreement"  /> </td>                    
    <td><label for="" class="control-label">外观颜色:</label></td> 
    <td><select name="appearance_color" id="appearance_color"  class="easyui-combobox" style="height:28px;width:160px;" editable=false ><option value='蓝色'>蓝色</option>
        <option value='红色'>红色</option>
        <option value='白色'>白色</option>
     </select> 
    </td>  
 </tr>
 <tr>
    <td><label for="" class="control-label">上市时间:</label></td> 
    <td><input type="text"  class='my_input laydate-icon' style='height:29px;'  onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'})" readonly value="1970-01-01 07:33:42" name="market_time" id="market_time" /> </td>  
    <td><label for="" class="control-label">产品等级:</label></td> 
    <td><select name="grade" id="grade"  class="easyui-combobox" style="height:28px;width:160px;" editable=false ><option value='普通款'>普通款</option>
        <option value='一级品'>一级品</option>
        <option value='特级品'>特级品</option>
     </select> 
    </td>  
</tr>
<tr>
    <td><label for="" class="control-label">支持接口:</label></td> 
    <td><select name="interface" id="interface"  class="easyui-combobox" style="height:28px;width:160px;" editable=false >
            <option value='Type-C'>Type-C</option>
        <option value='Usb'>Usb</option>
        </select> 
    </td>  
</tr>

效果图

 

 

 

标签:index,name,smarty,循环,foreach,TRUE,详解
来源: https://www.cnblogs.com/hailexuexi/p/16361553.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有