在Ubuntu系统中使用ThinkPHP模板引擎前,需确保已安装PHP(建议7.4及以上版本)、Composer及ThinkPHP框架(通过Composer安装:composer create-project topthink/think your-project-name)。Ubuntu的包管理器(apt)可用于安装PHP依赖:
sudo apt update
sudo apt install php php-cli php-mbstring php-xml php-bcmath php-json
ThinkPHP默认使用内置模板引擎(ThinkTemplate),核心配置位于config/template.php(ThinkPHP 5/6+)。关键参数说明:
type:模板引擎类型,保持'Think'(默认)即可;view_path:模板根目录,默认为application/模块名/view/(如application/index/view/);view_suffix:模板文件后缀,默认.html;tpl_begin/tpl_end:模板标签起始/结束符号,默认{/}(与多数模板引擎一致)。示例配置(config/template.php):
return [
'type' => 'Think',
'view_path' => './application/index/view/', // 模块视图目录
'view_suffix' => 'html',
'tpl_begin' => '{',
'tpl_end' => '}',
];
使用assign()方法将变量传递给模板,支持链式调用:
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index()
{
$this->assign('title', 'Ubuntu下ThinkPHP模板使用指南')
->assign('content', '本文将介绍ThinkPHP模板的核心功能');
return $this->fetch(); // 默认加载application/index/view/index/index.html
}
}
通过数组一次性传递多个变量,简化代码:
$data = [
'title' => 'Ubuntu下ThinkPHP模板使用指南',
'content' => '本文将介绍ThinkPHP模板的核心功能',
'version' => 'ThinkPHP 6.0'
];
return $this->fetch(null, $data); // 第二个参数为数组
模板中可直接访问系统变量(如请求参数、服务器信息),格式为{$Think.变量名}:
{$Think.get.id}:获取GET参数id;{$Think.server.http_host}:获取服务器域名;{$Think.version}:获取ThinkPHP版本。模板文件默认存放在application/模块名/view/控制器名/操作名.html(如application/index/view/index/index.html)。常用语法:
{$title}(输出$title的值);{$data.name}或{$data['name']}(输出数组data的name键值);{$obj->name}(输出对象obj的name属性)。使用{if}标签实现逻辑判断,支持elseif、else:
{if $age >= 18}
<p>您已成年</p>
{elseif $age > 12}
<p>您是青少年</p>
{else}
<p>您是儿童</p>
{/if}
volist标签:用于遍历数组(推荐,性能更好):<ul>
{volist name="person" id="item"}
<li>{$item.name} - {$item.age}岁</li>
{/volist}
</ul>
其中name为数组变量名,id为当前元素的临时变量名。foreach标签:兼容PHP语法,适用于复杂场景:<ul>
{foreach $person as $key=>$item}
<li>序号:{$key},姓名:{$item.name}</li>
{/foreach}
</ul>
模板继承通过{extend}和{block}标签实现,将公共部分(如头部、尾部)提取到布局模板,减少代码重复。
创建application/index/view/layouts/main.html(布局文件):
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{$title|default='默认标题'}</title> <!-- 使用default过滤器设置默认值 -->
</head>
<body>
<div id="header">
<h1>网站头部</h1>
</div>
<div id="content">
{block name="content"}<!-- 定义可替换的块 -->
默认内容
{/block}
</div>
<div id="footer">
<p>© 2025 Ubuntu下ThinkPHP模板使用指南</p>
</div>
</body>
</html>
子模板继承布局并填充content块:
{extend name="layouts/main"} <!-- 继承布局文件 -->
{block name="content"}
<h2>{$title}</h2>
<p>{$content}</p>
{/block}
include:包含其他模板文件(如公共头部、尾部):{include file="layouts/header"} <!-- 包含同模块下的layouts/header.html -->
{include file="Public:footer"} <!-- 包含Public模块的footer.html -->
volist:遍历数组(已在循环部分介绍)。foreach:兼容PHP语法的循环(已在循环部分介绍)。|符号调用函数,如{$time|date='Y-m-d H:i:s', ###}(将$time格式化为日期字符串);{$name|default='未设置'}(若$name为空,显示默认值);{$username|htmlspecialchars}(防止XSS攻击,转义HTML特殊字符)。为提升性能,建议开启模板缓存(生产环境必开)。配置位于config/template.php:
return [
'cache' => true, // 开启缓存
'cache_time' => 3600, // 缓存有效期(秒)
];
手动清除模板缓存(开发调试时使用):
use think\facade\Cache;
Cache::clear('template'); // 清除模板缓存
runtime/temp(缓存目录)、runtime/cache(模板缓存目录)有写入权限(chmod -R 755 runtime);config/template.php中的type参数,并安装对应扩展(如composer require topthink/think-twig)。通过以上步骤,即可在Ubuntu环境下高效使用ThinkPHP模板引擎,实现业务逻辑与视图层的完美分离。