ThinkPHP开发指南-视图-布局模板

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

新版的ThinkPHP可以自动识别模板文件中的布局模板,不再需要专门使用layout方法进行布局模板的输出了。布局模板本身的用法和普通的模板一样,只是增加了一个布局标签的用法,并且布局模板可以用于任何模板引擎,都可以很好的支持。

我们可以在布局模板里面使用下面的格式定义布局:这里的模板文件规则和display的参数用法是一致的,详细的可以参考模板输出部分的内容。

例如


<!-- layout::Public:header::60 -->

<!-- layout::Public:content::30 -->

<!-- layout::Public:footer::60 -->

如果使用的是内置的模板引擎的话,还可以使用下面的布局标签来定义,效果一致:

PHP代码

<layout name="Public:header" cache="60" />    

<layout name="Public:content" cache="30" />    

<layout name="Public:footer" cache="60" />   

三个布局定义(标签)分别导入了三个模板文件,由于Include标签导入的外部文件无法检测模板更新,而布局模板恰好可以很好的解决这个问题。假设上面的布局模板文件名称为default.html 位于Index目录下面,那么我们就可以在Action里面调用输出:

PHP代码

$this->display('Index:default');   

通常来说,我们可以不用重复定义很多的布局模板,使用动态布局模板来简化布局模板的定义。例如,我们把上面的布局模板修改为:

<!-- layout::Public:header::60 -->

<!-- layout::$content::30 -->

<!-- layout::Public:footer::60 -->

或者采用内置模板引擎的layout标签定义:

PHP代码

<layout name="Public:header" cache="60" />    

<layout name="$content" cache="30" />    

<layout name="Public:footer" cache="60" />    

这样所有的模板都会调用Public/header.html头部和Public/footer.html尾部,而中间的内容是通过变量动态控制输出调用的模板。

PHP代码

$this->assign('content', 'User:list');    

$this->display('Index:default');   

布局模板只是为了方便视图的定义,布局模板本身并不调用模板对应的操作方法,也就是说布局模板中的变量赋值仍然需要在控制器中进行。