必须使用Route::resource('blog', 'index/blog')注册资源路由并创建符合命名规范的Blog控制器,才能自动映射7个RESTful方法;控制器类名首字母大写、方法名全小写且无前缀,参数由URL路径自动注入。

要在ThinkPHP5.1中快速启用RESTful风格的资源路由并让控制器自动响应标准HTTP动词请求,必须跳过手动逐条注册7个路由的繁琐过程,直接使用资源路由注册机制,否则无法获得index、read、edit、save等语义化URL与方法的自动映射。
注册资源路由
打开 route/route.php 文件,在已有路由定义下方添加一行:
Route::resource('blog', 'index/blog');
这行代码会自动注册7条路由规则,分别对应GET /blog、GET /blog/1、GET /blog/1/edit、POST /blog、PUT /blog/1、DELETE /blog/1 等标准REST路径,并将请求分发到 app\index\controller\Blog 类中对应命名的方法。
立即学习“PHP免费学习笔记(深入)”;
注意:控制器类名必须与资源名首字母大写一致(如 blog → Blog),且必须位于 app\index\controller 目录下,否则会抛出类未找到异常。
创建资源控制器
在命令行进入项目根目录,执行:
php think make:controller index/Blog --plain
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
该命令生成空控制器文件 application/index/controller/Blog.php。打开它,按资源路由约定补全7个方法骨架:
public function index(){}
public function read($id){}
public function edit($id){}
public function save(){}
public function create(){}
public function update($id){}
public function delete($id){}
方法名必须严格使用英文小写,不能加任何前缀(如getRead或postSave),否则资源路由无法识别。每个方法接收的参数由URL路径中的动态变量决定,例如 /blog/123 会自动将 123 作为 $id 参数传入 read() 和 update() 方法。
验证资源路由是否生效
启动内置服务器:
php think run
依次访问以下地址:
① http://127.0.0.1:8000/blog → 触发 index() 方法
② http://127.0.0.1:8000/blog/5 → 触发 read(5) 方法
③ http://127.0.0.1:8000/blog/5/edit → 触发 edit(5) 方法
④ http://127.0.0.1:8000/blog → 发起 POST 请求 → 触发 save() 方法
只要控制器中对应方法返回字符串(如 return 'ok';),浏览器就能看到输出。若访问 /blog/5 返回404,说明 read() 方法尚未定义或拼写错误;若 /blog POST 请求报错 Method Not Allowed,请确认未开启强制路由或已配置允许POST方式。


















