ThinkPHP 6.0 创建控制器必须通过命令行生成+手动补全+路由注册三步闭环,否则404;需先安装think-helper扩展(6.0.x)或检查console.php配置(6.1+),用php think make:controller index/Index规范生成,再继承对应基类并注册路由。

ThinkPHP 6.0 创建第一个控制器不能靠手动新建文件“碰运气”,必须走命令行生成 + 手动补全 + 路由注册三步闭环,否则访问直接 404 或报错。
确认命令行扩展已安装
TP6.0 默认不带 make:controller 命令。运行 php think make:controller Index 提示 “Command not defined” 就说明缺扩展:
- TP6.0.x:执行
composer require topthink/think-helper - TP6.1+:检查
config/console.php中commands数组是否包含think\command\MakeController(默认已配好)
用标准格式生成控制器
控制器名要体现路径层级,框架据此自动补全命名空间和文件位置:
- 生成前台首页控制器:
php think make:controller index/Index→ 创建app/controller/index/Index.php,类名为IndexController,命名空间为app\controller\index - 生成 API 控制器:
php think make:controller api/User→ 创建app/controller/api/User.php,类名为UserController - 错误写法举例:
php think make:controller IndexController会导致类名变成IndexControllerController;php think make:controller index/IndexController可能生成嵌套路径
手动调整控制器内容
生成的只是骨架,需按用途修正:
- 如果是 Web 页面控制器:继承
app\BaseController或think\Controller,方法内用return view('index', [...])渲染模板 - 如果是 API 控制器:确保继承
think\Controller(不是think\facade\Controller),所有方法返回json([...]) - 所有可被路由调用的方法必须声明为
public - 注意模板路径匹配:比如
view('index')对应app/view/index.html
别忘了在路由中注册
生成控制器 ≠ 自动可用,必须在 app/route/app.php 中显式配置:
- 普通路由示例:
Route::get('hello', 'index.Index@hello'); - 资源路由(API):
Route::resource('user', 'api.User');(注意是点号分隔,不是斜杠) - 多应用模式下,确认
api已在app/multi.php中启用,否则请求直接 404
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











