ThinkPHP开发指南-视图-布局模板:修订间差异
来自站长百科
无编辑摘要 |
无编辑摘要 |
||
第33行: | 第33行: | ||
</pre> | </pre> | ||
通常来说,我们可以不用重复定义很多的布局模板,使用动态布局模板来简化布局模板的定义。例如,我们把上面的布局模板修改为: | 通常来说,我们可以不用重复定义很多的布局模板,使用动态布局模板来简化布局模板的定义。例如,我们把上面的布局模板修改为: | ||
<pre> | |||
<!-- layout::Public:header::60 --> | <!-- layout::Public:header::60 --> | ||
第39行: | 第39行: | ||
<!-- layout::Public:footer::60 --> | <!-- layout::Public:footer::60 --> | ||
</pre> | |||
或者采用内置模板引擎的layout标签定义: | 或者采用内置模板引擎的layout标签定义: | ||
2010年5月14日 (五) 14:57的最新版本
导航:返回上一页
新版的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');
布局模板只是为了方便视图的定义,布局模板本身并不调用模板对应的操作方法,也就是说布局模板中的变量赋值仍然需要在控制器中进行。