关于include的正确理解和用法

模板用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" />

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

原文地址:点击打开链接

猜你喜欢

转载自blog.csdn.net/php_225869/article/details/74453475