关于thinkphp框架头部公共文件的调用问题
之前工作一直用的一些开源系统二次开发,这次打算自己写一个网站用thinkphp,看了两天的官方文档说明,现在有个问题求大神指点,就是thinkphp里面的一些公用的比如头...
之前工作一直用的一些开源系统二次开发,这次打算自己写一个网站用thinkphp,看了两天的官方文档说明,现在有个问题求大神指点,就是thinkphp里面的一些公用的比如头部尾部文件的调用用include包含只是单纯包含了模板文件,本质就是只能包含静态资源,如果头部尾部文件里面有动态获取的参数就不行了,网上也找了一些解决方法说用widget或者跨控制器调用函数都可以获取参数,但这样获取来参数,难道那些HTML,DIV之类的要在重新写一次?有没有什么完美的解决办法,可以参数和这些html代码都直接include,直接复用就行了,就这么些分了,全部给了,求指点,感谢~
展开
3个回答
展开全部
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标签可以一定程度上简化重复的模板书写,和便于同步修改,不足就是如果公共模板文件发生更改,但是当前的主模板文件没有更改,则不会自动更新模板缓存,除非你设置了模板缓存有效期,那么在缓存过期后会自动更新模板缓存。
展开全部
这个分吗,你可以帮别人解答问题就可以获取积分财富了,还有个“知识大富翁活动”也可以帮你获取不少财富的。我就有3000多财富了。
说正事吧:
我很少用这个框架,但记得thinkPHP是可以动态获取include进来的页面的信息的,你是不是哪里没有设计好啊。实在不行,如果top页面的信息量不大的话,可以考虑用session或者cookie传值。
说正事吧:
我很少用这个框架,但记得thinkPHP是可以动态获取include进来的页面的信息的,你是不是哪里没有设计好啊。实在不行,如果top页面的信息量不大的话,可以考虑用session或者cookie传值。
追问
session,cookie给模板传值,我天呐,这种行为让我感觉就像光天化日之下,强奸良家妇女~
追答
不会啊,TinkPHP应该有专门的session和cookie传值功能,还蛮好用的。如果不想影响客户端,可以使用session,这个用起来与php是异曲同工的道理,都是服务器端其作用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以传递参数的哦。
例:
引入的页面中 引入 Wap/base这个 模板:
<include file="Wap/base" param="value"/>
被引入的模板文件 内 接受参数:
<p>[param]</p>
这里 的param就是从引用的模板传递过来的参数了
例:
引入的页面中 引入 Wap/base这个 模板:
<include file="Wap/base" param="value"/>
被引入的模板文件 内 接受参数:
<p>[param]</p>
这里 的param就是从引用的模板传递过来的参数了
追问
这个方式我知道,这两天看了两天官方文档里面又提到,但是如果参数比较多,这种不是很麻烦,而且既然是公共文件强调的就是复用,如果每次include都要这样传一次值,也太恶心了吧,CI前两天也瞄了几眼,虽然也存在这个问题,但是有人做了HMVC拓展可以解决,TP我找了好多资料好像就这鸟样.........
我测试过了模板继承方面是无法继承父模板里面动态获取的参数的,只能继承静态的,比如{$fathertitle}就无法继承,只能继承类似这样的父模板标题
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询