• smarty 中foreach 循环语句详解


    {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="6000px;" style="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="200px;" -->
                            <th class="col-11" style="100px;" ><{$val}></th> 
                        <{else if $smarty.foreach.col_name.index eq 1}>   <!-- 第1列 办事处  style="100px;"-->
                            <th class="col-11" style="80px;"  ><{$val}></th> 
                        <{else}>
                            <th class="col-11" style="80px;"><{$val}></th>     
                        <{/if}>
    
                    <{else if $smarty.foreach.row_name.index eq 1}>  <!-- 第1行 style="min-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;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;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;160px;" editable=false >
                <option value='Type-C'>Type-C</option>
            <option value='Usb'>Usb</option>
            </select> 
        </td>  
    </tr>

    效果图

     
  • 相关阅读:
    我的2015年ccf的解答
    VS中出现“链接器工具错误,XXX工具模块对于SAFESEH映像是不安全的”的解决方法
    记录每次运行的时刻的小程序
    c语言中strcpy与strlen函数对字符串最后的''的处理
    windows8.1的启动目录的路径
    使用feof()判断文件结束时会多输出内容的原因
    [转]android sqlite db-journal文件产生原因及说明
    安卓备份 To Do(待办事项)的数据库
    下载YouTube视频的方法
    Firefox及我使用的firefox扩展
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/16361553.html
Copyright © 2020-2023  润新知