5、循环标签

一 [ foreach ]

//1 向页面输出数组变量
$arr = ['a' => '10','b' => '20','c'=>'30'];
return View::fetch('',['info' => $arr]);

//2 模板页foreach循环
{foreach $info as $key=>$val}
{$key}:{$val}</br>
{/foreach}

//3 页面输出
a:10
b:20
c:30

 

二 [ volist ] 

1)使用场景

volist输出数据时  第一条是0  而非1 特别重要

主要输出查询数据集或二维数组

2)常用属性

1、name   模板赋值的变量名称

2、id 当前循环的变量(随意命名)不能和name属性冲突

3、offset 设置偏移量(从第几条开始显示)

4、length 显示条数

5、mod 取模的除数值

6、empty 没有数据时的提示语

7、key 输出循环变量

3)为空的时候输出提示( 常用 )

return View::fetch('index',['info' => '']);
{volist name='info' id='vo' empty='没有数据'}
{$vo.name}<br/>
{/volist}
//页面输出:没有数据

输出带样式的 提示

//empty属性不支持直接传入HTML语法 但是可以传入变量
View::assign('empty','<span style="color: red">没有数据</span>'); //向页面输出带css样式的变量
return View::fetch('',['info' => '']);

//页面调用变量
{volist name='info' id='vo' empty='$empty'}
{$vo.name}<br/>
{/volist}
  页面打印:带css样式的提示: 

4)输出下标是奇数的数据

//向页面传递变量
$arr = [
    0 => ['id'=>1,'name'=>'关羽'],
    1 => ['id'=>2,'name'=>'张飞'],
    2 => ['id'=>3,'name'=>'赵云'],
    3 => ['id'=>4,'name'=>'黄忠'],
    4 => ['id'=>5,'name'=>'马超']
];
return View::fetch('index',['info' => $arr]);

//循环输出 {volist name
='info' id='vo' mod='2'} //mod的值是除数的值 {eq name="mod" value="0"}{$vo.name} //value的值是余数的值 {/eq} {/volist} //value的值是1 输出 下标是奇数的数据 //value的值是0 输出 下标是偶数的数据

5)控制一定记录的换行( 重点 )

//以新闻列表页举例
<ul>
<volist name="article" id="vo" empty="该分类下没有资讯" mod="5">    
<li><a  href="/Home/article/detail/article_id/{$vo.article_id}.html" target="_blank">{$vo.title}</a><span class="fr">{$vo.publish_time|date='Y-m-d',###}</span></li>
<eq name="mod" value="4"></ul><div class="news_line"></div><ul></eq>
</volist>
</ul>

 

 

 

从这里可以看出,第一条资讯的数据排序是0,若设置为每5条进行一次分隔,那么就可以设置为数据序号除以5(mod=“5”)余数为4(value=“4”)。

余数(value="")需要设置的值,通常是比除数(mod="")的值小1。

 

自己动手

//1 向页面传递二维数组变量
$arr = [
['id'=>1,'name'=>'关羽'],
['id'=>2,'name'=>'张飞'],
['id'=>3,'name'=>'赵云'],
['id'=>4,'name'=>'黄忠'],
['id'=>5,'name'=>'马超'],
['id'=>6,'name'=>'诸葛亮'],
['id'=>7,'name'=>'曹操'],
['id'=>8,'name'=>'孙权'],
['id'=>9,'name'=>'司马懿'],
['id'=>10,'name'=>'水镜先生']
];
return View::fetch('',['info' => $arr]);

//2 使用volist循环 每四个数据输出分隔符 ----
{volist name='info' id='vo' mod='4'}
{$vo.name}<br/>
{eq name="mod" value="3"}---------------<br/>{/eq}
{/volist}

//3 页面打印
关羽
张飞
赵云
黄忠
---------------
马超
诸葛亮
曹操
孙权
---------------
司马懿
水镜先生

6)输出循环变量

//向模板赋值变量
$arr = [
['id'=>1,'name'=>'关羽'],
['id'=>2,'name'=>'张飞'],
['id'=>3,'name'=>'赵云'],
];
return View::fetch('',['info' => $arr]);

//使用循环变量属性
{volist name="info" id="vo" key="k"}
{$k}.{$vo.name}<br/>
{/volist}

//输出结果
1.关羽
2.张飞
3.赵云

//如果没有设置key 默认使用循环变量i
{volist name="info" id="vo"}
{$i}.{$vo.name}<br/>
{/volist}

//输出结果和上面一样
1.关羽
2.张飞
3.赵云

 

7)输出数组的索引 ( 常用 )

//直接用$key输出
{volist name="info" id="vo"}
{$key}.{$vo.name}<br/>
{/volist}

//打印结果
0.关羽
1.张飞
2.赵云

 

8)在模板页调用model   没具体测试

{volist name=":model('user')->all()" id="vo"}
{$vo.name}
{/volist}

  

三 for循环

//输出1到100
{for start='0' end='100' step='1' comparison='lt' name='a'}
{$a}
{/for}

//输出100到1
{for start='100' end='0' step='-1' comparison='gt' name='a'}
{$a}
{/for}

//start 开始值
//end   结束值
//step  步长
//name  默认值是i
//comparison 默认值lt 可选值gt

 

posted @ 2021-01-06 09:26  棉花糖88  阅读(149)  评论(0)    收藏  举报