嵌套的模板 parse()函数的一个灵巧的特性是它创建的MyOutput句柄是一个真正的模板变量,就象some_color 是一 个模板变量。所以如果你有另一个模板,它有一个{MyOutput}标签,当你分析第二个模板时,所有的 {MyOutput}标记将被替换为MyOutput中的分析后的文本。这个特性允许你将一个模板文件嵌入到另一个模板 中。所以,我们可能有另一个名为wholePage.ihtml的模板,内容如下:
对不起,你没赢。但是如果你赢了,我们将对你说: {MyOutput}
并且在wholePage.ihtml被分析后,最后的结果将是:
对不起,你没赢。但是如果你赢了,我们将对你说: 祝贺!你赢了一辆新蓝色Honda Prelude!
下面是分析两个模板的PHP代码:
-------------------------------------------------------------------------------- set_file(array("mainpage" => "mainpage.ihtml", "each_element" => "each_element.ihtml"));reset($myArray);while (list($elementName, $elementValue) = each($myArray)) { // 设置 'value' 和 'name' 为每一个元素的值和名字 $t->set_var("name",$elementName); $t->set_var("value",$elementValue); // 追加each_element的拷贝 $t->parse("array_elements","each_element",true);}$t->pparse("output","mainpage");?>-------------------------------------------------------------------------------- 这个例子使用了两个模板,mainpage.ihtml和each_element.ihtml。mainpage.ihtml模板可能是这样:
Here is the array:
{array_elements}
上面的{array_elements}标签将被each_element.ihtml的拷贝所替换,它将根据数组($myArray)进行重 复。each_element.ihtml模板看上去可能是:
{name}: {value}
处理结果是一个包含$myArray元素的格式化很好的表格。但是如果将两个模板合并成一个模板不是更好 吗?实际上,它们可以使用模板块来合并使用。模板块允许从一个模板中取出一块文本,所以你可以重复很 多次,或者在它上面做任何你想做的事情。但是我将在另一篇文章讲述这个特性。
模板,PHPLIB处理方式(二) |