查看完整版本: phplib里带的模板功能的确非常好用,但有个致命的小错误需要更正!

铁血霸主 2007-8-1 22:38

phplib里带的模板功能的确非常好用,但有个致命的小错误需要更正!

             <p>phplib里带的template.inc包含了一个模板类,用它可以实现程序<a href="http://www.phpchina.com/javascript:;" onClick="javascript:tagshow(event, '%B4%FA%C2%EB');" target="_self"><u><strong>代码</strong></u></a>和<BR>界面的分离,给程序设计和界面设计带来了极大的方便,而且它的实现比快速<BR>模板要好。但有一个致命的小错误导致set_block()函数不能正常使用,而这个<BR>函数是非常重要的,它在处理重复块时显得非常的好用。<BR>&nbsp;&nbsp;&nbsp;&nbsp;下面通过一个最简单的例子来讲解用法及解决<a href="http://www.phpchina.com/javascript:;" onClick="javascript:tagshow(event, '%B7%BD%B7%A8');" target="_self"><u><strong>方法</strong></u></a>:<BR>模板文件:page1.ihtml(名字你可以随便取,后缀ihtml是一种习惯用法)<BR>&lt;HTML&gt;<BR>&lt;HEAD&gt;<BR>&lt;TITLE&gt; {TITLE} &lt;/TITLE&gt;<BR>&lt;/HEAD&gt;<BR>&lt;BODY BGCOLOR="#FFFFFF"&gt;<BR>&lt;!-- BEGIN TBK --&gt;<BR>ID: {ID}&lt;BR&gt;<BR>NAME: {NAME}&lt;BR&gt;<BR>&lt;HR&gt;<BR>&lt;!-- END TBK --&gt;<BR>&lt;/BODY&gt;<BR>&lt;/HTML&gt;<BR>处理文件:test.php<BR>&lt;?php<BR>&nbsp;&nbsp;include("./template.inc");<BR>&nbsp;&nbsp;# 创建模板变量$t&nbsp;&nbsp;<BR>&nbsp;&nbsp;$t = new Template(".", "keep");<BR>&nbsp;&nbsp;# 定义页面变量的引用,这样你就可以用page1来引用页面了<BR>&nbsp;&nbsp;$t-&gt;set_file("page1","page1.ihtml");<BR>&nbsp;&nbsp;# 提取名称为TBK的块,让它指向tbks的引用<BR>&nbsp;&nbsp;$t-&gt;set_block("page1", "TBK", "tbks");<BR>&nbsp;&nbsp;# 替换标题TITLE变量<BR>&nbsp;&nbsp;$t-&gt;set_var("TITLE","my test of template");<BR>&nbsp;&nbsp;# 定义ID和NAME,然后把TBK附加到tbks<BR>&nbsp;&nbsp;for ($i=1; $i&lt;=3; $i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;$n&nbsp;&nbsp;= $i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$nn = $i*10;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$t-&gt;set_var(array("ID" =&gt; $n, "NAME" =&gt; $nn));<BR>&nbsp;&nbsp;&nbsp;&nbsp;$t-&gt;parse("tbks", "TBK", true);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;# 最后输出页面<BR>&nbsp;&nbsp;$t-&gt;pparse("out", "page1");<BR>?&gt;<BR>&nbsp;&nbsp;&nbsp;但是这个例子是不能运行的,网友Openball曾给出一种解决方案,把<BR>$t-&gt;set_block("page1", "TBK", "tbks");改为$t-&gt;set_block("page1", "TBK", "{tbks}");注意最后的“{}”符号,这样的确可以用了,<BR>但有更好的解决方案,打开template.inc文件,找到set_block()函数里的<BR>这句话:$str = preg_replace($reg, "{$name}", $str);呵呵,看到没,<BR>phplib已经做了处理了,但忘了(我猜的:)转义“{”,因此把这句话改<BR>为:$str = preg_replace($reg, "\{$name}", $str);就可以了。这样,<BR>phplib自带的例子也可以用了,而且这种方法似乎更规范些,不知各位的<BR>已经如何,具体的还可以参照我在实际中用的模板和程序,欢迎交流经验<BR>&nbsp;&nbsp;&nbsp;模板:http://myjingpin.com/tpl/v1/show.html<BR>&nbsp;&nbsp;&nbsp;程序:http://myjingpin.com/app/v1/show.php?mid=flash <BR></p>     <center><input type="image" onclick=copyToClipBoard() src="http://www.phpchina.com/images/phpcn_book_bu_tj.gif" border="0"></center>
页: [1]
查看完整版本: phplib里带的模板功能的确非常好用,但有个致命的小错误需要更正!
PageRank