可否支持layout?

#1 flyingbug

就是可以支持默认布局,比如每个页面都会出现的top.html和footer.html,这样就不用每个页面都include了
不过我猜测这样可能会对ajax输出产生问题

另外,我对Smarty等模板不熟,不知道一般用模板的话,是不是有其他解决办法

2011-03-28 07:35:42

#2 jake

smarty的layout就是include,可以看看 http://www.smarty.net/docs/en/

先用用smarty,有意见再提,我们来研究研究。

layout的概念只是在.NET的IDE中比较明显而已。

2011-03-28 08:19:57

#3 flyingbug

恩,看了,可能老大比较习惯Smarty的方式
似乎主流的php框架也都支持layout方法,最早接触是在rails,我对.NET不熟
不过include倒是也能解决,就是每个文件多加两行代码,不过有时候会忘记加,比较麻烦

2011-03-28 08:46:54

#4 jake

不说,只对比:
thinkphp,布局模板http://www.thinkphp.cn/Manual/132
   
   


smarty,包含文件http://www.smarty.net/docs/en/language.function.include.tpl
{include file='page_header.tpl' cache_lifetime=60}
{include file="$tpl_name.tpl" cache_lifetime=60}
{include file='page_footer.tpl' cache_lifetime=60}

这里不是说支持不支持的问题,而是“名称不同”。都是以单一的模板进行页头页脚模板的包含,然后再通过输入的变量,获取某个当前页面的模板。

speedphp之所以直接用smarty作为view,不单是因为smarty是PHP官方的并且历史悠久,而且还因为smarty几乎可以实现一切框架在视图方面的特性。

建议楼上可以熟悉一下smarty,这样会更有利于比较两者。

2011-03-28 09:10:42

#5 jake

另外,还可以参考这个,里面有提到另一种layout的实现。

http://www.smarty.net/docs/en/advanced.features.template.inheritance.tpl

2011-03-28 09:13:41

#6 flyingbug

明白了,多谢jake!

2011-03-28 09:14:48

#7 jake

明白了,多谢jake!
flyingbug 发表于 2011-3-28 09:14
如果能够做到,包含的不是一个“模板”,而是一个“控制器/动作”的话,会更好。目前这个正在研究。。。

2011-03-28 09:22:30

#8 jake

目前已经开始研究layout模式在smarty中的直接实现:lol

2011-04-23 07:49:09

#9 霸气千秋

jake 发表于 2011-3-28 09:10
不说,只对比:
thinkphp,布局模板http://www.thinkphp.cn/Manual/132
   
如果header和footer中存在变量的话,这样做的麻烦了,

2012-05-07 09:17:00

#10 jake

开发版中已经实现了layout

2012-05-07 09:55:54

#11 蔓荆子_金刚电商

能否做一个例子介绍一下,我看到开发版里有这个功能,很想要这个功能。谢谢

2013-05-06 17:26:10