「ThinkPHP5开发连载67」thinkphp5连载模板-包含文件

上一篇文章讲解“模型-模板布局之动态方法布局”,本篇文章讲解“模板-包含文件”。
包含文件
在当前模板文件中包含其他的模板文件使用include标签,标签用法:
注意:1. 包含的模板文件中不能再使用模板布局或者模板继承。
包含文件有三种方式:
①使用模板表达式
②使用模板文件
③传入参数
使用模板表达式
模板表达式:
1)基本使用
①新建index控制器,并新建index方法
②在index.html模板中包含文件
③在admin模块的index控制器下新建index.html模板文件
④启用全局布局模板(默认即可),配合包含文件使用
启用全局布局模板,一般会将公共的头部与底部放在布局模板中。
布局模板layout.html:
⑤在public下新建header.html与footer.html文件
预览:
注意:1. 开启布局模板时,公共头部与底部一般放在布局模板中。1. 包含的模板文件中不能再使用模板布局或者模板继承。
2)一次包含多个模板
在index.html模板中一次包含多个模板
预览:
注意:1. 注意,包含模版文件并不会自动调用控制器的方法,也就是说包含的其他模版文件中的变量赋值需要在当前操作中完成。
使用模板文件
可以直接包含一个模板文件名(包含完整路径),例如:
在index.html模板中,包含一个完整路径的模板文件
预览:
注意:1. 路径以“项目目录/public/”路径下为起点。
传入参数
无论你使用什么方式包含外部模板,include标签支持在包含文件的同时传入参数,例如,下面的例子我们在包含header模板的时候传入了title和keywords参数:
①在index.html模板中传入参数
②在public/header.html模板中输出title和keywords
关闭全局布局,预览:
注意:1. 上面title参数传入的是字符串,模板内的[title]最终会替换成title参数的值。2. 参数不仅能传入字符串,也可以传入变量,变量可以是从控制器赋值的。3. 全局布局模板对参数无影响,关掉的原因是,在index.html模板中包含header.html模板,并传入参数,header.html模板输出了参数,但是在布局模板layout.html中也包含了header.html模板,会先渲染布局模板,那么会导致title、keywords不存在的错误。4. 包含文件中可以再使用include标签包含别的文件,但注意不要形成a包含a,或者a包含b而b又包含a这样的死循环。5. 由于模板解析的特点,从入口模板开始解析,如果外部模板有所更改,模板引擎并不会重新编译模板,除非在调试模式下或者缓存已经过期。如果部署模式下修改了包含的外部模板文件后,需要把模块的缓存目录清空,否则无法生效。
thinkphp5连载为卓象程序员原创,转载请联系卓象程序员
关注卓象程序员,定期发布技术文章
下一篇讲解“模板-输出替换”