thinkphp输出动态页面需四步:安装启用think-view引擎、控制器用view()或assign()+fetch()传值渲染、模板放app/view/下并用{$var}语法、支持分页/布局/包含等高级功能。

ThinkPHP 要输出动态页面,核心是把数据传进模板,并用正确的引擎解析渲染。不是写了 assign() 就自动显示,也不是随便放个 .html 文件就能访问——必须走对路径、配对引擎、调对方法。
模板渲染的前提:装好并启用 think-view 引擎
ThinkPHP 6 默认不带业务级模板引擎,只保留 PHP 原生引擎(仅用于错误页)。
- 执行安装命令:
composer require topthink/think-view
- 安装后检查
vendor/topthink/think-view是否存在; - 确认
config/view.php中'type' => 'Think'(不是'php'),这是启用 think-template 的关键。
控制器中正确传值并触发渲染
有三种常用方式,本质都是「赋值 + 渲染」两步合一或分步:
-
推荐用
view()辅助函数(最简洁)return view('index', ['title' => '首页', 'list' => $data]);自动完成变量注入和模板加载,无需额外调用
fetch()。 -
用
View::assign()+View::fetch()(分步写法)View::assign('title', '首页'); View::assign('list', $data); return View::fetch('index'); // 必须 fetch,否则无输出 -
继承
think\Controller后直接用$this->fetch()$this->assign('title', '首页'); return $this->fetch('index');
⚠️ 注意:
assign()只是存变量,不调fetch()或view(),页面就是空白。
模板文件要放在对的位置、用对的语法
- 模板路径固定为
app/view/下,文件名需与控制器方法名一致(如index()对应app/view/index.html); - 变量用
{$title},不是<?php echo $title ?>; - 循环用
{volist name="list" id="item"}{$item.name}{/volist},不是foreach; - 支持内置函数,如
{:date('Y-m-d', $time)}、{$name|default='匿名'}。
动态内容不止变量:还要处理分页、布局、包含等
-
分页渲染:控制器传入
$list = $query->paginate(10),模板中写{$list->render()};
如需自定义结构,可传参:{$list->render(['theme' => '<nav>%LINKS%</nav>', 'var_page' => 'p'])}; -
公共布局:在
app/view/layout.html写头部/尾部,模板里加{layout name="layout"},内容自动注入{__CONTENT__}; -
模板包含:用
<include file="public/header"></include>复用片段,支持传参<include file="header" title="首页"></include>。
基本上就这些。路径、引擎、方法、语法四者对上,动态页面自然就出来了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











