一、通过smarty方式调用变量调节器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>无标题文档</title>
</head>
<body>
<!--显示当前时间戳-->
<{
$smarty
.now}>
<!--调用调节器显示想要的时间格式-->
<{
$smarty
.now|date_format:
"%Y-%m-%d %H-%M-%S"
}>
</body>
</html>
|
分别显示:
1498791289
2017-06-30 04-54-49
格式:变量 | 变量调节器的名称 :参数 (竖线和冒号)
二、通过自定义方式调用变量
为什么要自己写呢?因为调用变量调节器需要自己去手册找到参数,不如自己写好直接调用。
1、写一个时间的变量调节器
(1)在plugin文件夹中新建一个文件:modifier.time.php
1
2
3
4
5
6
|
<?php
//用来格式化时间日期
function
smarty_modifier_time(
$str
){
return
date
(
"Y-m-d H:i:s"
,
$str
);
}
?>
|
(2)test.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>无标题文档</title>
</head>
<body>
<!--调用自定义的变量调节器-->
<{
$smarty
.now|time}>
</body>
</html>
|
显示效果:2017-06-30 05:06:53
什么时候用,就可以什么时候直接调取了,不用在找手册了呢
2、做一个截取字符串的变量调节器
(1)modifier.jiequ.php
1
2
3
4
5
6
7
8
9
10
11
|
<?php
function
smarty_modifier_jiequ(
$str
,
$cd
,
$sl
){
// 第一个参数:是传过来的变量,必须有
// 第二个参数:是截取多长
// 第三个参数:是要代替后面的省略符号
$str
=
substr
(
$str
,0,
$cd
);
return
$str
.
$sl
;
}
?>
|
(2)12.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?php
header(
"content-type:text/html;charset=utf-8"
);
//引入smarty类
require
"../init.inc.php"
;
//数组类型
$arr
=
array
(
"one"
=>
"1111"
,
"two"
=>
"2222"
);
//注册变量
$smarty
->assign(
"ceshi"
,
"我叫你好你叫遇见他叫断桥这是真的么"
);
$smarty
->assign(
"haha"
,
"12345678901234567890"
);
$smarty
->assign(
"nnn"
,
"abcdefghijklmnopqrstuvwxyz"
);
//显示
$smarty
->display(
"test.html"
);
?>
|
(3) test.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>无标题文档</title>
</head>
<body>
<{
$ceshi
|jiequ:
"12"
:
"..."
}>
<{
$haha
|jiequ:
"10"
:
"..."
}>
<{
$nnn
|jiequ:
"10"
:
"..."
}>
</body>
</html>
|
分别显示:
我叫你好...
123456789012...
abcdefghijkl...
注意:汉字在php中相当于三个字符;所以当输出为汉字时要注意截取的长度:
3、做一个与数据库相关的变量调节器(zhangsan------张三)
(1)12.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
header(
"content-type:text/html;charset=utf-8"
);
//先引入DBDA类
require
"DBDA.class.php"
;
//引入smarty类
require
"../init.inc.php"
;
//从订单表中找到用户名uid
$db
=
new
DBDA();
$sql
=
"select uid from orders"
;
$arr
=
$db
->query(
$sql
);
//将得到的uid注册
$smarty
->assign(
"one"
,
$arr
[0]);
$smarty
->display(
"test.html"
);
?>
|
(2)modifier.uername.php
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
function
smarty_modifier_username(
$str
)
{
//无法直接调用DBDA类,所以采用最原始的方法
$sql
=
"select name from users where uid='zhangsan'"
;
$db
=
new
mysqli(
"localhost"
,
"root"
,
""
,
"book"
);
$result
=
$db
->query(
$sql
);
$arr
=
$result
->fetch_row();
return
$arr
[0];
}
?>
|
(3) test.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>无标题文档</title>
</head>
<body>
<{
$one
[0]|username}>
</body>
</html>
|
输出汉字:张三
可以做很多这样的自定义的调节器,便于以后调用~~