ThinkPHPMVC开发实战

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156

视图中数据循环输出:
==========

一、Volist标签
==========

Volist标签主要用于在模板中循环输出数据集或者多维数组。

volist标签(循环输出数据)

闭合

非闭合标签

属性

name(必须):要输出的数据模板变量 id(必须):循环变量//临时变量 offset(可选):要输出数据的offset,起始数据序列 length(可选):输出数据的长度 key(可选):循环的key变量,默认值为i mod(可选):对key值取模,默认为2 empty(可选):如果数据为空显示的字符串

通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。 在Action中首先对模版赋值:

1. $User = M('User');
2. $list = $User->select();
3. $this->assign('list',$list);

在模版定义如下,循环输出用户的编号和姓名:

1. <volistname="list"id="vo">
2. {$vo.id}
3. {$vo.name}
4. </volist>

Volist标签的name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id表示当前的循环变量,可以随意指定,但确保不要和name属性冲突,例如:

1. <volistname="list"id="data">
2. {$data.id}
3. {$data.name}
4. </volist>

支持输出部分数据,例如输出其中的第5~15条记录

1. <volistname="list"id="vo"offset="5"length='10'>
2. {$vo.name}
3. </volist>

输出偶数记录

1. <volistname="list"id="vo"mod="2">
2. <eqname="mod"value="1">{$vo.name}</eq>
3. </volist>

Mod属性还用于控制一定记录的换行,例如:

1. <volistname="list"id="vo"mod="5">
2. {$vo.name}
3. <eqname="mod"value="4"><br/></eq>
4. </volist>

为空的时候输出提示:

1. <volistname="list"id="vo"empty="暂时没有数据">
2. {$vo.id}|{$vo.name}
3. </volist>

empty属性不支持直接传入html语法,但可以支持变量输出,例如:

1. $this->assign('empty','<span class="empty">没有数据</span>');
2. $this->assign('list',$list);

然后在模板中使用:

1. <volistname="list"id="vo"empty="$empty">
2. {$vo.id}|{$vo.name}
3. </volist>

输出循环变量

1. <volistname="list"id="vo"key="k">
2. {$k}.{$vo.name}
3. </volist>

如果没有指定key属性的话,默认使用循环变量i,例如:

1. <volistname="list"id="vo">
2. {$i}.{$vo.name}
3. </volist>

如果要输出数组的索引,可以直接使用key变量,和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的,例如:

1. <volistname="list"id="vo">
2. {$key}.{$vo.name}
3. </volist>

从2.1版开始允许在模板中直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:

1. <volistname=":fun('arg')"id="vo">{$vo.name}</volist>

二、Foreach标签// <!\[CDATA\[ $(function(){ $(window).resize(function(){ $('.book-content').css('min-height', $(window).height() - 130); }).resize(); //表格隔行变色 $('table').TableColor(); //代码高亮 prettyPrint(); }); //表格隔行变色插件 $.fn.TableColor = function(){ return $(this).each(function(){ if(this.nodeName.toLowerCase() != 'table') return; var self = $(this); self.find('tr').each(function(index) { var \_this = $(this); if(index % 2 == 0){ \_this.addClass('add'); } else { \_this.addClass('even'); } \_this.hover( function(){\_this.addClass('hover')}, function(){\_this.removeClass('hover')} ); }); }); } // \]\]>

Foreach标签
=========

foreach标签也是用于循环输出

foreach标签(循环输出数据)

闭合

非闭合标签

属性

name(必须):要输出的数据模板变量 item(必须):循环单元变量 key(可选):循环的key变量,默认值为key

示例:

1. <foreachname="list"item="vo">
2.     {$vo.id}
3.     {$vo.name}
4. </foreach>

Foreach标签相对比volist标签简洁,没有volist标签那么多的功能。优势是可以对对象进行遍历输出,而volist标签通常是用于输出数组。

三、For标签// <!\[CDATA\[ $(function(){ $(window).resize(function(){ $('.book-content').css('min-height', $(window).height() - 130); }).resize(); //表格隔行变色 $('table').TableColor(); //代码高亮 prettyPrint(); }); //表格隔行变色插件 $.fn.TableColor = function(){ return $(this).each(function(){ if(this.nodeName.toLowerCase() != 'table') return; var self = $(this); self.find('tr').each(function(index) { var \_this = $(this); if(index % 2 == 0){ \_this.addClass('add'); } else { \_this.addClass('even'); } \_this.hover( function(){\_this.addClass('hover')}, function(){\_this.removeClass('hover')} ); }); }); } // \]\]>

For标签
=====

For标签用于实现for循环,格式为:

for标签(循环输出数据)

闭合

非闭合标签

属性

start(必须):循环变量开始值 end(必须):循环变量结束值 name(可选):循环变量名,默认值为i step(可选):步进值,默认值为1 comparison(可选):判断条件,默认为lt

用法:

1. <forstart="开始值"end="结束值"comparison=""step="步进值"name="循环变量名">
2. </for>

开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。comparison 的默认值是lt;;name的默认值是i,步进值的默认值是1,举例如下:

1. <forstart="1"end="100">
2. {$i}
3. </for>

解析后的代码是

1. for ($i=1;$i<100;$i+=1){
2.     echo $i;
3. }
(っ•̀ω•́)っ✎⁾⁾ 坚持技术学习、内容输出与分享,您的支持将鼓励我继续创作!(*/ω\*)
( • ̀ω•́ )✧如有疑问或需要技术讨论,请留言或发邮件到 aclearzhang@qq.com.(*・ω< ) 
  • 本文作者:: AClearZhang
  • 本文链接:: 281.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!