可以看到在php代码里有两个东西 $tpl->set_block("main", "list", "lists"); //代码1
$tpl->parse("lists", "list", true);
就不可思议的将整个块循环输出了.代码1用来加载模板main中的块list,并给其一个名字lists,list就是模板中的一个大变量,它的内容就是<li>{username} 的成绩是 {score}即:"list" = "<li>{username} 的成绩是 {score}"
之所以用lists命名,是为了程序的可读性,也就是说我很容易就知道xxxs是xxx块的名称.
使用set_block后,模板中的块内容<!-- begin list -->
<li>{username} 的成绩是 {score}
<!-- end list -->
就被lists代替了.于是我们的模板就变成了<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> 我的第二个模板文件 </title>
</head>
<body>
下面是一个列表
<ul>
{lists}
</ul>
</body>
</html>
块变成了一个变量(lists)!下面只要将lists变量替换成我们想要的就行了.
代码二所处的循环while ($row = $idb->fetch_array($result))
{
$tpl->set_var("username", $row["username"]);
$tpl->set_var("score", $row["score"]);
$tpl->parse("lists", "list", true); //代码2
}
每一次循环,两个set_var分别给username,score赋值,然后"list"就变成了
"list" = "<li>具体的名字 的成绩是 具体的分数"
代码2就是将list分析后的内容赋给lists,这样就完成了整个块的分析.
parse第三个参数可以设置list中的值是直接存在lists里面,还是附加在原有值之后.我们这里设置为true,说明是附加在原有值之后,才得以每个list的值都会显示出来.反之设为false的话,后面的值会覆盖掉以前的值.最终的结果会是
|
|