关于thinkphp框架头部公共文件的调用问题

之前工作一直用的一些开源系统二次开发,这次打算自己写一个网站用thinkphp,看了两天的官方文档说明,现在有个问题求大神指点,就是thinkphp里面的一些公用的比如头部尾部文件的调用用include包含只是单纯包含了模板文件,本质就是只能包含静态资源,如果头部尾部文件里面有动态获取的参数就不行了,网上也找了一些解决方法说用widget或者跨控制器调用函数都可以获取参数,但这样获取来参数,难道那些HTML,DIV之类的要在重新写一次?有没有什么完美的解决办法,可以参数和这些html代码都直接include,直接复用就行了,就这么些分了,全部给了,求指点,感谢~

include标签

使用include标签在当前模板中包含公共模板,例如常见的header和footer等公共模板,include标签最常用的属性是file,但是支持不同的用法,其用法基本和我们常用的模板渲染方法display方法差不多。例如:
包含Public目录下面的header模板

<include file="Public:header" />

包含当前模板目录下面的menu模板

<include file="menu" />

表示包含blue模板主题下面的User/read模板文件,include标签所支持的模板深度只能到操作层次,也就是说ThinkPHP默认的模板结构采用的是:主题/模块/操作.模板后缀,使用上述用法包含模板的时候,file属性不需要指定模板后缀,如果你的模板结构不是标准结构,可以采用包含完整模板文件的方式:

<include file="./Tpl/default/header.html" />

include标签可以一定程度上简化重复的模板书写,和便于同步修改,不足就是如果公共模板文件发生更改,但是当前的主模板文件没有更改,则不会自动更新模板缓存,除非你设置了模板缓存有效期,那么在缓存过期后会自动更新模板缓存。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-10
这个分吗,你可以帮别人解答问题就可以获取积分财富了,还有个“知识大富翁活动”也可以帮你获取不少财富的。我就有3000多财富了。
说正事吧:
我很少用这个框架,但记得thinkPHP是可以动态获取include进来的页面的信息的,你是不是哪里没有设计好啊。实在不行,如果top页面的信息量不大的话,可以考虑用session或者cookie传值。追问

session,cookie给模板传值,我天呐,这种行为让我感觉就像光天化日之下,强奸良家妇女~

追答

不会啊,TinkPHP应该有专门的session和cookie传值功能,还蛮好用的。如果不想影响客户端,可以使用session,这个用起来与php是异曲同工的道理,都是服务器端其作用。

第2个回答  2015-04-10
可以传递参数的哦。
例:
引入的页面中 引入 Wap/base这个 模板:
<include file="Wap/base" param="value"/>
被引入的模板文件 内 接受参数:
<p>[param]</p>
这里 的param就是从引用的模板传递过来的参数了追问

这个方式我知道,这两天看了两天官方文档里面又提到,但是如果参数比较多,这种不是很麻烦,而且既然是公共文件强调的就是复用,如果每次include都要这样传一次值,也太恶心了吧,CI前两天也瞄了几眼,虽然也存在这个问题,但是有人做了HMVC拓展可以解决,TP我找了好多资料好像就这鸟样.........

我测试过了模板继承方面是无法继承父模板里面动态获取的参数的,只能继承静态的,比如{$fathertitle}就无法继承,只能继承类似这样的父模板标题

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网