thinkphp新手需安装think-view引擎、严格匹配模板路径大小写、用view()或view::assign()传值,{$var}不可有空格,数组遍历用{volist},模板继承用{extend}和{block}。

刚写完控制器逻辑却卡在页面打不开?模板文件放对位置却提示“Template not found”,变量传进去了但页面还是空白——这些是ThinkPHP新手第一天必踩的三连坑。
安装并启用ThinkTemplate模板引擎
TP6默认不带任何模板引擎,只保留PHP原生引擎用于错误页,【不装think-view就永远无法使用{$var}、{volist}等标签语法】。
打开终端,进入项目根目录,执行:
composer require topthink/think-view
安装完成后,打开config/view.php,把type值改成字符串'Think':
'type' => 'Think'
注意:如果之前手动改过view_path,请确认路径末尾不带斜杠,例如 './view' 是对的,'./view/' 会导致部分系统下路径拼接失败。
创建模板文件并严格匹配路径规则
ThinkPHP按“模块/控制器/操作”三级结构自动找模板,大小写和下划线都必须完全一致。
比如app\controller\User.php里的index()方法,默认会加载app\view\user\index.html。
第一步:在app目录下创建view文件夹(全小写)
第二步:在view下创建user文件夹(全小写,不能是User或USER)
第三步:在user文件夹里新建index.html,内容写:
欢迎访问用户首页
{$title}
这一步最容易错:Linux服务器上user和User是两个不同目录,Windows开发时可能不报错,一上线就404。
控制器中正确传值并触发渲染
方法一:用View门面+数组传参(推荐新手起步)
在控制器方法里直接写:return view('user/index', ['title' => '用户管理后台']);
方法二:用View::assign链式调用fetch()
View::assign('title', '用户管理后台')->fetch('user/index');
注意:TP6已废弃$this->assign(),继续写$this->assign()会直接报Call to undefined method错误。
方法三:跨模块引用公共模板
比如要包含admin模块下的header,写:{include file="admin@public/header" /},漏掉@符号就找不到文件。
模板中输出变量与遍历数组
普通变量直接用{$title},注意{和$之间绝对不能有空格,写成{ $title}或{$ title}都会静默失败。
数组不能用{$list[0].name},模板语法不支持中括号索引。
正确写法是用{volist}标签:
{volist name="list" item="vo"}
如果list是空数组,{volist}区域不会渲染任何内容,无需额外判断empty。
使用模板继承统一布局
第一步:在view目录下新建layout.html,内容包含{__CONTENT__}占位符
第二步:在子模板顶部写{extend name="layout" /}
第三步:用{block name="body"}{/block}包裹主体内容
第四步:在layout.html对应位置写{block name="body"}{/block}作为插入点
关键点:子模板里的block名必须和layout.html里声明的完全一致,否则整个区域不显示。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











