PHPLIB模板如何接受多组值?
setfile()和set_var()的参数可以是关联数组(句柄作为数组索引,模板文件作为值),这样模板就可以接受多个值,比如:
<?php
……
$tmp->setfile(array("FileHandle"=>"UserTemp.ihtml","FileHandle2"=>"UserTemp2.ihtml"));
$tmp->set_var(array("Product"=>"随身听","Product2"=>"电视机"));
……
?>
如何给模板变量追加数据?
我们可以给parse()和pparse()提供第三个参数(布尔变量)来给模板变量追加数据:
<?php
……
$tmp->pparse("Output","FileHandle",true);
……
?>
这样,FileHandle被分析后就会被追加到Output变量的值的后面而不是简单的替换。
为什么要使用block机制?
比方说我们想要显示:
你订购的是:随身听 电视机,……
用上面的方法直接追加的话,可能显示出来的是:
你订购的是:随身听 你订购的是:电视机 你订购的是:……
显然不符合我们的要求,那么如何有效解决这个问题呢?这里就要使用block机制。
我们将上面的模板文件UserTemp.ihtml修改一下:
你订购的是:
<!-- BEGIN Product_List -->
{Product}
<!-- END Product_List -->
这样我们就定义了一个名为"Product_List"的block。
相应的程序为:
<?php
include "template.inc";
$tmp=new Template("/home/user_dir/user_temp/");
$tmp->set_file("FileHandle","UserTemp.ihtml");
$tmp->set_block("FileHandle","Product_List","Product_Lists");
//将文件中的block替换成{Product_Lists}
$tmp->set_var("Product","随身听");
$tmp->parse("Product_Lists","Product_List",true);
$tmp->set_var("Product","电视机");
$tmp->parse("Product_Lists","Product_List",true);
//具体使用中,可以用数组和循环来做
$tmp->parse("Output","FileHandle");
$tmp->p("Output");
?>
现在的输出就是我们想要的结果了。