商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Linux下ThinkPHP模板引擎使用教程

Linux下ThinkPHP模板引擎使用教程

  发布于2026-07-05 阅读(0)

扫一扫,手机访问

Linux下ThinkPHP模板引擎使用教程

在Linux环境下使用ThinkPHP模板引擎,其实比大多数人想象的要简单。只要基础环境搭好,配合正确的目录结构和控制器渲染方式,很快就能上手。下面就从环境准备开始,一步步梳理整个流程。

一、基础准备

1. 环境要求

首先得确保Linux系统上已经装好了PHP 7.4或更高版本、Composer以及ThinkPHP框架(推荐6.x版本,兼容性更好,功能也更完善)。可以用下面两条命令快速验证环境是否就绪:

Linux下ThinkPHP模板引擎使用教程

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 目录。

四、注意事项

  1. 权限问题:Linux 下务必确保 /application/view/ 目录有读写权限,推荐 chmod -R 755 /application/view/
  2. 路径规范:模板文件的路径需要和控制器模块、控制器名、方法名对应起来。比如 Index 控制器的 index 方法,默认对应 /application/index/view/index/index.html
  3. 调试技巧:在 config/app.php 中把 'app_debug' => true 打开,就能看到详细的模板渲染错误信息,排查问题非常方便。
  4. 性能优化:生产环境下记得关闭调试模式('app_debug' => false),同时开启模板缓存,页面加载速度会有明显提升。

掌握这些要点之后,你在 Linux 环境下就能比较顺畅地使用 ThinkPHP 模板引擎了。业务逻辑和视图层分离得越彻底,后续维护和扩展就越省力。

本文转载于:https://www.yisu.com/ask/18080863.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。
  • using namespace 使用中遇到的问题怎么解决 正版软件
    using namespace 使用中遇到的问题怎么解决
    命名空间的基本概念与常见引入问题在C++等编程语言中,命名空间(namespace)是一种将代码标识符(如变量、函数、类名)封装在特定名称下的机制,其主要目的是避免命名冲突,尤其是在大型项目或使用多个第三方库时。使用“using namespace”指令可以将指定命名空间中的所有名称引入当前作用域,
    9天前 0
  • c语言函数递归 实操经验总结:这些技巧很实用 正版软件
    c语言函数递归 实操经验总结:这些技巧很实用
    理解递归的基本原理在C语言中,递归是一种函数调用自身的编程技术。要掌握它,首先需要理解其核心思想:将一个复杂的大问题,分解为一个或几个与原问题相似但规模更小的子问题,直到子问题足够简单,可以直接求解。这个过程通常包含两个关键部分:递归出口和递归体。递归出口定义了问题何时不再继续分解,即最简单、可直接
    9天前 0
  • c语言函数递归 怎么选?常见方案对比分析 正版软件
    c语言函数递归 怎么选?常见方案对比分析
    递归函数的基本概念与适用场景在C语言编程中,递归是一种函数调用自身的编程技巧。它并非适用于所有问题,但在处理某些具有自相似结构的问题时,能提供极其清晰和优雅的解决方案。递归的核心思想是将一个大规模问题分解为一个或多个同类型但规模更小的子问题,直到子问题简单到可以直接求解。典型的适用场景包括树形结构的
    9天前 0
  • Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解 正版软件
    Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解
    理解内存管理的基石在Objective-C的编程世界中,内存管理是开发者必须掌握的核心技能之一。它直接关系到应用的性能、稳定性与资源利用效率。与一些采用自动垃圾回收机制的语言不同,Objective-C在很长一段时间里,依赖一套基于引用计数的、需要开发者部分介入的管理规则。这套规则的核心思想是明确的
    9天前 0
  • 如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏 正版软件
    如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏
    理解 dealloc 的角色与时机在 iOS 应用开发中,内存管理是保障应用性能与稳定性的基石。dealloc 方法是 Objective-C 中对象生命周期结束时的关键回调,它标志着对象即将被系统回收内存。正确理解其触发时机至关重要:当一个对象的引用计数降为零时,运行时系统会自动调用该对象的 de
    9天前 0