ThinkPHP模板怎么使用?模板引擎基础方法与实例教程

来源:网站主作者:阿里山老登头衔:草根站长
导读:本期聚焦于小伙伴创作的《ThinkPHP模板怎么使用?模板引擎基础方法与实例教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《ThinkPHP模板怎么使用?模板引擎基础方法与实例教程》有用,将其分享出去将是对创作者最好的鼓励。

ThinkPHP作为国内广泛使用的PHP开发框架,自带了功能完善的模板引擎,开发者可以通过简单的配置和代码调用,快速实现视图层的渲染工作,无需手动拼接HTML字符串,大幅提升开发效率。

模板文件存放规则

ThinkPHP的模板文件默认存放在项目的application/模块名/view/控制器名/目录下,文件名需要和控制器中渲染模板时指定的名称对应,后缀默认为.html。如果是多模块项目,需要根据当前访问的模块自动匹配对应目录下的模板文件。

比如当前访问的是index模块下的User控制器的profile方法,默认会加载application/index/view/user/profile.html模板文件。如果需要自定义模板路径,可以在配置文件中修改view_path参数。

基础模板渲染与变量分配

在控制器中渲染模板主要有两种方式,最常用的是fetch方法,该方法会自动定位模板文件并渲染输出。如果需要分配变量到模板中,可以使用assign方法,或者在fetch方法的第二个参数中直接传递变量数组。

控制器端代码示例

<?php
namespace appindexcontroller;
use thinkController;

class User extends Controller
{
    public function profile()
    {
        // 方式一:先分配变量再渲染
        $this->assign('username', '张三');
        $this->assign('age', 25);
        // 渲染默认模板,即view/user/profile.html
        return $this->fetch();
        
        // 方式二:直接传递变量数组渲染
        // $data = ['username' => '李四', 'age' => 28];
        // return $this->fetch('profile', $data);
    }
}

模板文件接收变量示例

模板中可以直接使用{$变量名}的语法输出分配的变量内容,模板引擎会自动解析该语法并替换为对应的变量值。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>用户资料页</title>
</head>
<body>
    <h1>用户基本信息</h1>
    <p>用户名:{$username}</p>
    <p>年龄:{$age}</p>
</body>
</html>

常用内置模板标签使用

ThinkPHP模板引擎提供了丰富的内置标签,用于处理循环、条件判断、包含子模板等常见场景,开发者无需在模板中编写原生PHP代码,保持模板的简洁性。

循环标签volist

volist标签用于遍历数组类型的变量,常用于输出列表数据,支持设置遍历的起始位置、步长、空数据提示等属性。

<h2>用户列表</h2>
<ul>
    <volist name="user_list" id="user">
        <li>{$user.id} - {$user.name} - {$user.email}</li>
    </volist>
</ul>

对应的控制器端分配变量代码:

public function userList()
{
    $userList = [
        ['id' => 1, 'name' => '张三', 'email' => 'zhangsan@ipipp.com'],
        ['id' => 2, 'name' => '李四', 'email' => 'lisi@ipipp.com'],
        ['id' => 3, 'name' => '王五', 'email' => 'wangwu@ipipp.com'],
    ];
    $this->assign('user_list', $userList);
    return $this->fetch('userList');
}

条件判断标签if

if标签用于实现条件判断逻辑,支持eqneqgtlt等比较运算符,也可以直接使用PHP的比较语法。

<p>
    <if condition="$age gt 18">
        该用户已成年
    <else />
        该用户未成年
    </if>
</p>

包含子模板标签include

如果多个模板文件有公共的头部、底部内容,可以使用include标签引入公共子模板,减少代码重复。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>公共页面</title>
</head>
<body>
    <include file="public/header" />
    <div class="content">
        这里是页面主体内容
    </div>
    <include file="public/footer" />
</body>
</html>

上述代码会引入application/当前模块/view/public/header.htmlfooter.html两个公共模板文件。

模板配置与常见问题

可以在config/view.php配置文件中修改模板引擎的相关参数,比如设置模板后缀、是否开启模板缓存、缓存有效期等。如果模板修改后没有立即生效,可以检查是否开启了模板缓存,或者手动清除runtime目录下的缓存文件。

另外需要注意,模板中输出的变量如果可能包含HTML内容,默认会被模板引擎转义,避免XSS攻击。如果需要原样输出HTML内容,可以使用{$变量名|raw}语法,比如{$content|raw}

ThinkPHP模板引擎视图渲染模板变量模板标签修改时间:2026-06-15 10:30:46

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。