之前工作一直用的一些开源系统二次开发,这次打算自己写一个网站用thinkphp,看了两天的官方文档说明,现在有个问题求大神指点,就是thinkphp里面的一些公用的比如头部尾部文件的调用用include包含只是单纯包含了模板文件,本质就是只能包含静态资源,如果头部尾部文件里面有动态获取的参数就不行了,网上也找了一些解决方法说用widget或者跨控制器调用函数都可以获取参数,但这样获取来参数,难道那些HTML,DIV之类的要在重新写一次?有没有什么完美的解决办法,可以参数和这些html代码都直接include,直接复用就行了,就这么些分了,全部给了,求指点,感谢~
includeæ ç¾
使ç¨includeæ ç¾å¨å½å模æ¿ä¸å
å«å
Œ
±æ¨¡æ¿ï¼ä¾å¦å¸¸è§çheaderåfooterçå
Œ
±æ¨¡æ¿ï¼includeæ ç¾æ常ç¨çå±æ§æ¯fileï¼ä½æ¯æ¯æä¸åçç¨æ³ï¼å
¶ç¨æ³åºæ¬åæ们常ç¨ç模æ¿æ¸²ææ¹æ³displayæ¹æ³å·®ä¸å¤ãä¾å¦ï¼
å
å«Publicç®å½ä¸é¢çheader模æ¿
å å«å½å模æ¿ç®å½ä¸é¢çmenu模æ¿
<include file="menu" />表示å å«blue模æ¿ä¸»é¢ä¸é¢çUser/read模æ¿æ件ï¼includeæ ç¾ææ¯æç模æ¿æ·±åº¦åªè½å°æä½å±æ¬¡ï¼ä¹å°±æ¯è¯´ThinkPHPé»è®¤ç模æ¿ç»æéç¨çæ¯ï¼ä¸»é¢/模å/æä½.模æ¿åç¼ï¼ä½¿ç¨ä¸è¿°ç¨æ³å å«æ¨¡æ¿çæ¶åï¼fileå±æ§ä¸éè¦æå®æ¨¡æ¿åç¼ï¼å¦æä½ ç模æ¿ç»æä¸æ¯æ åç»æï¼å¯ä»¥éç¨å å«å®æ´æ¨¡æ¿æ件çæ¹å¼ï¼
<include file="./Tpl/default/header.html" />includeæ ç¾å¯ä»¥ä¸å®ç¨åº¦ä¸ç®åéå¤ç模æ¿ä¹¦åï¼å便äºåæ¥ä¿®æ¹ï¼ä¸è¶³å°±æ¯å¦æå ¬å ±æ¨¡æ¿æ件åçæ´æ¹ï¼ä½æ¯å½åç主模æ¿æ件没ææ´æ¹ï¼åä¸ä¼èªå¨æ´æ°æ¨¡æ¿ç¼åï¼é¤éä½ è®¾ç½®äºæ¨¡æ¿ç¼åæææï¼é£ä¹å¨ç¼åè¿æåä¼èªå¨æ´æ°æ¨¡æ¿ç¼åã
说正事吧:
我很少用这个框架,但记得thinkPHP是可以动态获取include进来的页面的信息的,你是不是哪里没有设计好啊。实在不行,如果top页面的信息量不大的话,可以考虑用session或者cookie传值。追问
session,cookie给模板传值,我天呐,这种行为让我感觉就像光天化日之下,强奸良家妇女~
追答不会啊,TinkPHP应该有专门的session和cookie传值功能,还蛮好用的。如果不想影响客户端,可以使用session,这个用起来与php是异曲同工的道理,都是服务器端其作用。
例:
引入的页面中 引入 Wap/base这个 模板:
<include file="Wap/base" param="value"/>
被引入的模板文件 内 接受参数:
<p>[param]</p>
这里 的param就是从引用的模板传递过来的参数了追问
这个方式我知道,这两天看了两天官方文档里面又提到,但是如果参数比较多,这种不是很麻烦,而且既然是公共文件强调的就是复用,如果每次include都要这样传一次值,也太恶心了吧,CI前两天也瞄了几眼,虽然也存在这个问题,但是有人做了HMVC拓展可以解决,TP我找了好多资料好像就这鸟样.........
我测试过了模板继承方面是无法继承父模板里面动态获取的参数的,只能继承静态的,比如{$fathertitle}就无法继承,只能继承类似这样的父模板标题
本回答被提问者和网友采纳