已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 虎绿林 > 开发

标题: [hu60t手册]四、使用模板引擎

作者: @Ta

时间: 2012-05-11

点击: 5144

    现在,回到我们在上一节举的例子,你已经建立了page/test/aa.php,然后该怎么做呢?像平常一样echo标记?当然不是。
    在hu60t中,php的作用是完成应用的逻辑过程,比如读取数据库等操作。而页面的显示,应该交给模板引擎解决。
    第一步,初始化模板引擎:
<?php
hu60::start();
/*
    现在Smarty模板引擎就被初始化了,它的变量名是 $tpl
    接下来,设置一些变量给模板引擎,以便在模板中显示:
*/
$tpl->assign('aa','这是aa');
$tpl->assign('bb','这是bb');
$tpl->assign(array('cc'=>10086,'dd'=>10010,'ee'=>10000));
/*
最后一步:显示模板
*/
$tpl->display('tpl:aa_test');
?>


    现在,访问m.php/test.aa.xhtml看看吧。
    什么,提示“该页未找到”?当然啦,模板文件还没有建立嘛。
    那好,我现在就去建立一个模板。可是它的文件名应该是什么?
    所以,这就涉及了模板文件定位的问题,这又是一个相当复杂的规则。


2. 模板文件定位
    先来看模板路径的表达式。和先前一样,[]里的部分可省
  tpl:[cid.]name[.bid]
    这里的cid与bid和php文件定位里的含义一样。
    name是模板文件的名称,只要不含点(.)就行。但建议只用小写字母、数字、下划线和减号。
    如果cid和bid省略,则用当前页面的cid和bid代替。例,tpl:aa_test,在m.php/test.a.xhtml下就相当于tpl:test.aa_test.xhtml,在m.php/test.aa.wml下就相当于tpl:test.aa_test.wml
    可以同时省略cid和bid(写成tpl:aa_test),或者只省略bid(写成tpl:test.aa_test),但是不能只省略cid。如果你写tpl:aa_test.wml,hu60t会认为aa_test是cid,wml是name。
    
    得到cid、name和bid之后,就可以定位tpl文件了。
    hu60t会首先查找page/cid/name.bid.tpl
    如果不存在,查找page/cid/name.tpl
    如果不存在,查找page/error/no_tpl.bid.tpl
    如果不存在,查找page/error/no_tpl.tpl
    
    是不是和php文件定位很相似呢?
    在本例中,你可以只建立一个模板文件(page/test/aa_test.tpl),使用hu60t的扩展标记实现wml/xhtml兼容。
    你也可以写两个模板,一个page/test/aa_test.wml.tpl,一个aa_test.xhtml.tpl。当访问m.php/test.aa.wml和m.php/test.aa.xhtml时,hu60t会自动选择对应的模板调用(在你没有通过tpl:cid.name.bid指定bid的情况下)
    所以一般情况下,我们都不指定bid。调用当前目录的tpl用 $tpl->display('tpl:name'); 调用其他cid下的模板用 $tpl->display('tpl:cid.name');
    
    嗯,就是这样。下一节将谈怎样写一个wml/xhtml兼容的模板。

[隐藏样式|查看源码]


『回复列表(7|隐藏机器人聊天)』

1. 沙发有奖励没
(/@Ta/2012-05-11 22:20//)

2. 支持!
(/@Ta/2012-05-11 22:24//)

3. 观看…学习框架设计中……
(/@Ta/2012-05-11 22:26//)

4. 这都是老虎自己写的?
(/@Ta/2012-05-11 23:01//)

5. 精彩
(/@Ta/2012-05-12 07:09//)

6. 看不懂,兴趣已经没有了
(/@Ta/2012-05-12 08:31//)

7. OH MY GOD!太炫了,为什么我在上高二啊…
(/@Ta/2012-05-23 22:43//)

回复需要登录

8月6日 01:58 星期三

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1