欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

thinkphp中关于include的正确理解和用法

程序员文章站 2022-04-08 08:40:30
...
模板用include引入是非常灵活的一种布局方案。
但是由于官方教程说的不是太清楚,常造成误解。所以来说两句:
1.首先include引入的模板和action对应的模板之间的区别。
这是最容易混淆的。action对应的模板是和action绑定的。
而include模板和action么有任何关系!
include模板只是一段html,可以放在任何地方。它的参数不会经过定义它的那个action的解析,而是使用它的那个action才影响它的解析。
如果你用过js的模板就很好理解。
混淆的地方是include可以用控制器/方法的模式引用,这个意思只是说action控制器的view也可以作为模板来使用。但是使用的只是view中的html代码而已。action当中的代码是不会被执行的!
2.include的数据来源。
include的数据源不是action,而是在include标签中传入的,比如官方教程的例子:
<include file="Public/header" title="ThinkPHP框架" keywords="开源 WEB开发框架" />

这里title和keywords是两个变量传递到include模板中了,这两个变量可不是action提供的啊。

结论:
include模板是独立的,可以再任何地方调用。具有接收参数的功能。
牢记;谁用谁传参!
把action的view作为include模板只是方便使用现成的html而已。当action对应的view作为include模板引入的时候,它已经异化成了独立的html片段,和action没有任何关系了。所以官方的说法:
注意,包含模版文件并不会自动调用控制器的方法,也就是说包含的其他模版文件中的变量赋值需要在当前操作中完成。
include中如果包含变量,来源也是当前使用这个include的action,而不是作为view来源的那个action!那个action是不会被执行的!现在你可以理解了吧。
所以,理解include模板的关键就是它是很多可以重用的html片段的组织方式。至于这些片段是独立存在的html还是action中的view都无所谓。
至于本人的做法,则是放到放置css,img,js的那个public文件夹下面。加一个htmltpl的文件夹,引用的时候

<include file="./Public/htmltpl/abc.html" />


浅显的理解,不知道说明白了没有。

以上就是thinkphp中关于include的正确理解和用法的详细内容,更多请关注其它相关文章!