CentOS环境下ThinkPHP模板引擎使用技巧
ThinkPHP模板文件默认存放在/application/view/
目录下,命名规则与控制器、操作方法严格对应(如HomeController@index
对应home/index.html
)。在CentOS系统中,需确保该目录及子目录具备正确的读写权限(建议设置为755
),避免因权限问题导致模板无法加载。
assign()
方法将数据传递给模板,如$this->assign('title', '首页')
,模板中直接使用{$title}
输出。{$arr[0]}
)或键名({$arr.key}
)访问;对象通过成员属性({$obj.property}
)或方法({$obj.method()}
)输出。|default
过滤器为变量设置默认值,如{$username|default="游客"}
,避免变量未定义时报错。view/layouts/
目录下创建基础布局(如main.html
),使用{__CONTENT__}
占位符接收子模板内容。{extend name="layouts/main" /}
继承布局,用{block name="content"}
定义可覆盖的区块,如:{extend name="layouts/main" /}
{block name="content"}
<h1>{$title}</h1>
<p>{$content}</p>
{/block}
此方式可减少公共部分(如头部、尾部)的重复代码。{if}
标签实现逻辑分支,如:{if $user}
<p>欢迎,{$user.name}</p>
{else}
<p>请登录</p>
{/if}
{foreach}
标签遍历数组,如:<ul>
{foreach $list as $item}
<li>{$item.id}:{$item.name}</li>
{/foreach}
</ul>
支持$key=>$value
形式获取键值对,满足复杂数据结构的渲染需求。{$Think.get.id}
获取GET参数(如id=1
则输出1
),同理支持{$Think.post.name}
(POST参数)、{$Think.cookie.user}
(Cookie)等。|
符号调用函数处理变量,如{$content|htmlspecialchars}
防止XSS攻击,{$time|date="Y-m-d",###}
格式化时间戳。通过{include}
标签引入公共模板,支持变量传递和多文件包含:
{include file="Public/header" /}
(引入当前模块下的Public/header.html
)。{include file="Admin@Public/header" /}
(引入Admin
模块的Public/header.html
)。{include file="header" title="子页面标题" keywords="关键词" /}
(向包含的模板传递变量)。config/view.php
中设置'cache' => true
,并指定缓存目录(如'cache_path' => './runtime/temp/'
),提升模板渲染性能。'tpl_cache' => false
,避免模板修改后需手动清除缓存。\think\facade\Cache::clear()
清除所有缓存,或在runtime/temp/
目录下手动删除编译后的模板文件。通过继承think\Template
类并注册标签库,实现高级自定义功能(如生成二维码、调用第三方API):
application/common.php
中定义标签方法,如:function formatDate($timestamp) {
return date('Y-m-d H:i:s', $timestamp);
}
{formatDate($item.create_time)}
,直接输出格式化后的时间。<?=
短标签,需在/etc/php.ini
中设置short_open_tag=On
,并重启Apache/Nginx服务。/application/view/
、runtime/
等目录可被Web服务器用户(如apache
、nginx
)访问,避免403 Forbidden
错误。