thinkphp5.1模板渲染主要有三种方式:return view()最简单直接;继承controller后用$this->fetch()更灵活;$this->display()适合动态html片段;还可通过view::share()设全局变量及模板继承提升复用性。

ThinkPHP5.1模板渲染不难,关键在于选对方式、理清路径、赋值到位。掌握几种常用写法,基本能覆盖绝大多数页面输出场景。
控制器直接 return view() 最常用
这是新手上手最快的方式,无需继承基类也能用:
- 在控制器方法中直接写 return view();,系统会自动匹配当前模块 + 控制器小写名 + 操作小写名的模板路径,例如
index/index/hello对应application/index/view/index/hello.html - 可传入模板名和变量数组:return view('user/profile', ['name' => '张三', 'age' => 25]);
- 如果控制器没继承
\think\Controller,这个助手函数仍可用;若已继承,则也可改用$this->fetch()
继承 Controller 后用 $this->fetch() 更灵活
推荐在正式项目中使用这种方式,便于统一管理与扩展:
- 先确保控制器 extends
\think\Controller - 用
$this->assign()单个或批量赋值:$this->assign('title', '用户列表')->assign('list', $users); - 再调用 return $this->fetch();(自动定位)或 return $this->fetch('admin/user/list');(指定路径)
- fetch 支持跨模块写法,如 $this->fetch('admin@user/edit'),表示调用 admin 模块下的 user/edit 模板
直接渲染内容或字符串(非文件)
适合动态生成简单 HTML 片段,跳过模板文件:
- 使用 $this->display() 方法:return $this->display('
欢迎 {$name}
', ['name' => '李四']); - 注意:内容中仍支持模板语法(如 {$name}),但不走文件系统,适合调试或轻量返回
- 若未继承 Controller,可用 view()->display(...) 替代
全局变量与模板继承小技巧
提升复用性,减少重复赋值:
- 在公共位置(如中间件、基础控制器 initialize 方法)用 \think\facade\View::share('site_name', '我的后台'); 设置全局变量,所有模板都能直接使用 {$site_name}
- 模板支持 {extend name="public/base"} 和 {block name="content"}...{/block},实现布局继承,头部、尾部只需写一次
- 分页等带参数的链接,记得在 paginate() 中传入 query 参数,否则翻页会丢失 GET 变量
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











