现在大部分模板类中都提供block功能,block用来处理不确定个数的html 元素,当出现多层不可定的元素,就会用到block的嵌套,对于block嵌套的用法,经过多次测试还是有需要注意的地方,下面用一个例子说明block嵌套的一种处理方法。
1、我们先来看一下例子要达到的效果(图一):
2、模板文件test.htm
模板文件就是静态的页,可以用你喜欢的网页编辑器编制他的外观
<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<table width="400" border="1" bordercolor="#000000">
<tr><td><div align="center">{myname}测试block</div></td></tr>
<tr><td>我的动植园:</td> </tr>
<!-- begin animallist -->
<tr><td>{animal}</td></tr>
<!-- begin plantlist -->
<tr><td> {plant}</td></tr>
<!-- end plantlist -->
<!-- end animallist -->
</table>
</body>
</html>
<?php
include_once("template.inc");
$t = new template(".");
$myname = "小猪噜噜";
/***************************************
animal数组作为第一层block中循环数据,
plant数组作为第二层block中循环数据,
也可以根据自己的需要,从数据库中读去
数据记录
***************************************/
$animal = array("动物","植物");
$plant = array(array("小猪","小白","小强"),array("玫瑰","向日葵"));
$t->set_file("myfilehandle","test.htm");
//模板中{myname}被$myname的值替换
$t->set_var("myname",$myname);
/*************************************
设置block ,先设置第一层block,文件句
柄是myfilehandle,再设置第二层block,
文件句柄是第一层block。注意两句语句
的次序
*************************************/
$t->set_block("myfilehandle","animallist","a");
$t->set_block("animallist","plantlist","p");
//第一层block开始
for ($i=0;$i<count($animal);$i++) {
/*******************************
这一句,很重要,不能少,它的作
用是清除上一次第二层block的内容
否则,结果如(图二)所示,会重
复显示上一次第二层block的内容。
原因是因为parse("p","plantlist",true)
中选项ture
******************************/
$t->set_var("p");
//模板中{animal}被$animal[$i]的值替换
$t->set_var("animal",$animal[$i]);
//第二层block开始
for ($j=0;$j<count($plant[$i]);$j++) {
//模板中{plant}被$plant[$i][$j]的值替换
$t->set_var("plant",$plant[$i][$j]);
//解析第一层block
$t->parse("p","plantlist",true);
}
//解析第二层block
$t->parse("a","animallist",true);
}
$t->parse("out","myfilehandle");
$t->p("out");
?>
4、缺少$set_var(“p”)语句的效果:
例子比较简单,需要注意的地方我已经在程序的相应位置做了解释。这只是其中的一种处理嵌套block的方法,与大家共享,希望对大家有帮助。感谢phpx和phpe.net上各位朋友的帮助完成此文。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器