Linux下ThinkPHP模板引擎使用教程
在Linux中使用ThinkPHP模板引擎,需PHP7.4+、Composer及ThinkPHP6.x。模板文件存于/application/模块名/view/,控制器用assign()传数据,fetch()渲染输出。
Linux下ThinkPHP模板引擎使用教程
在Linux环境下使用ThinkPHP模板引擎,其实比大多数人想象的要简单。只要基础环境搭好,配合正确的目录结构和控制器渲染方式,很快就能上手。下面就从环境准备开始,一步步梳理整个流程。
一、基础准备
1. 环境要求
首先得确保Linux系统上已经装好了PHP 7.4或更高版本、Composer以及ThinkPHP框架(推荐6.x版本,兼容性更好,功能也更完善)。可以用下面两条命令快速验证环境是否就绪:

php -v
composer -V
2. 目录结构
模板文件默认放在 /application/[模块名]/view/ 目录下,比如 /application/index/view/。建议按模块划分视图文件夹,这样结构更清晰。举个例子:
/application/index/view/home/index.html # 首页模板
/user/profile.html # 用户资料模板
3. 控制器渲染基础
控制器中通过 assign() 方法传递数据,再用 fetch() 方法渲染模板。比如在 /application/index/controller/Index.php 里这样写:
assign('title', 'Linux下ThinkPHP模板使用教程');
// 传递数组数据
$data = [
'content' => '本教程将指导你在Linux环境下使用ThinkPHP模板引擎',
'version' => 'ThinkPHP 6.x'
];
$this->assign($data);
// 渲染模板(默认查找 /application/index/view/index/index.html)
return $this->fetch();
}
}
注:
fetch()方法的参数是模板文件路径(省略模块名和后缀),框架会自动定位到对应的目录。
二、模板语法详解
ThinkPHP 6.x 默认使用 Twig 模板引擎(扩展了原生标签),语法更灵活,也更易读。下面梳理一下最常用到的几种语法。
1. 变量输出
用 {{ }} 包裹变量名,注意不需要加 $ 符号。像下面这样:
{{ title }}
{{ content }}
框架版本:{{ version }}
2. 流程控制
if 条件判断
{% if isLogin %}
退出登录
{% else %}
登录
{% endif %}
foreach 循环
{% for article in articles %}
-
{{ article.title }}
{{ article.content }}
{% endfor %}
注:
articles是控制器传递的数组,比如$this->assign('articles', $articleList)。
3. 模板继承
通过 {extend} 继承父模板,再用 {block} 重写子模板的内容。这种机制非常适合做网站统一布局,复用头部、底部等公共部分。
父模板(/application/index/view/layout/base.html)
{% block title %}默认标题{% endblock %}
网站LOGO
{% block content %}{% endblock %}
子模板(/application/index/view/home/index.html)
{extend name="layout/base"}
{% block title %}首页 - {{ title }}{% endblock %}
{% block content %}
欢迎来到首页
{{ content }}
{% include "home/header.html" %}
{% for article in articles %}
- {{ article.title }}
{% endfor %}
{% include "home/footer.html" %}
{% endblock %}
4. 内置函数与过滤器
调用 PHP 函数
在 {{ }} 里可以直接调用 PHP 函数,比如格式化时间:
当前时间:{{ "now"|date("Y-m-d H:i:s") }}
注:
date是 PHP 内置函数,"now"是时间标识符。
过滤器(Escape)
用 | 符号应用过滤器,比如转义 HTML 防止 XSS 攻击:
用户名:{{ username|htmlspecialchars }}
常用过滤器:
upper(转大写)、lower(转小写)、default(默认值,如{{ name|default('游客') }})。
三、常用功能实践
1. 模板缓存
开启模板缓存可以有效提升性能,在 config/view.php 里配置:
return [
'cache' => true, // 开启缓存
'cache_time' => 3600, // 缓存时间(秒)
'tpl_cache' => true, // 模板缓存开关
];
需要清除缓存时,可以直接通过命令行:
php think clear # 清除所有缓存(包括模板缓存)
或者在代码中手动清除:
use think\facade\Cache;
Cache::clear(); // 清除模板缓存
2. 自定义模板标签
如果觉得内置标签不够用,可以通过继承 think\Template 类来扩展。比如创建一个 /application/common.php 文件,自定义一个日期格式化标签:
然后模板里就能这样用:
创建时间:{{ {'timestamp': item.create_time}|formatDate }}
3. 包含子模板
用 {% include %} 引入公共模板,比如头部和尾部,能避免重复代码:
{% include "common/header.html" %}
{{ content }}
{% include "common/footer.html" %}
注:子模板路径是相对于当前模块的
view目录。
四、注意事项
- 权限问题:Linux 下务必确保
/application/view/目录有读写权限,推荐chmod -R 755 /application/view/。 - 路径规范:模板文件的路径需要和控制器模块、控制器名、方法名对应起来。比如
Index控制器的index方法,默认对应/application/index/view/index/index.html。 - 调试技巧:在
config/app.php中把'app_debug' => true打开,就能看到详细的模板渲染错误信息,排查问题非常方便。 - 性能优化:生产环境下记得关闭调试模式(
'app_debug' => false),同时开启模板缓存,页面加载速度会有明显提升。
掌握这些要点之后,你在 Linux 环境下就能比较顺畅地使用 ThinkPHP 模板引擎了。业务逻辑和视图层分离得越彻底,后续维护和扩展就越省力。


































