ThinkPHP提供了页面include的功能,可以实现把一下模板的HTML文件加载进入当前的HTML中。举个例子:
如果我们做一个订餐系统,这个订餐系统分为:搜索,订餐,付款和填写这4个页面,然后在这4个页面中我们需页面的上端都显示餐馆的logo,下端都显示餐馆的联系方式。
最容易想到的方式,就是在以上4个页面中都引用一下logo的图片地址,下端都写一下联系方式。
但是这种方式有一下几个问题:
1:维护困难,每次变动logo或者联系信息,就必须找到所有的页面进行修改。
2:代码量比较多,重复代码比较多。
3:容易导致风格不一致,不同页面不可能总是一个人在写,当人多了的时候,很容易出现不同的人实现的样式不一样。
既然在每个页面写重复的代码会导致这么多问题,那么最好就把这些公共的代码能够抽取出来成为独立的文件,并且在每个页面中,都把这些文件引用到自己的页面中。ThinkPHP 3.2.3 提供了以下的一个方式:
<include file="Public/common_css" location='__PUBLIC__'/>
以上的HTML模板文件加载了View目录下的子目录Public文件夹里面的common_css.html文件,并且传递了一个参数location='__PUBLIC__'。
Common_css.html 的代码如下:
<link href="[location]/common/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="[location]/common/jquery-ui-1.12.1.custom/jquery-ui.min.css" rel="stylesheet" type="text/css">
<link href="[location]/common/css/common.css" rel="stylesheet" type="text/css">
这就可以把这块代码插入到目标模板文件中了。
注意:ThinkPHP 3.2.3 没法翻译被include标签加载的文件。比如__PUBLIC__还有{$name}这种取值的操作都是没法实现的。必须在使用include标签的时候传递进去(请参考上面的代码)。被传递进来的参数,需要通过[param_name]的方式进行取值。