### 资源控制器
资源控制器可以让你轻松的创建RESTFul资源控制器,可以通过命令行生成需要的资源控制器,例如:
~~~
// 生成index模块的Blog资源控制器
php think make:controller index/Blog
~~~
或者使用完整的命名空间生成
~~~
php think make:controller app\index\controller\Blog
~~~
最终生成的控制器类代码为:
~~~
<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
class Blog extends Controller
{
/**
* 显示资源列表
*
* @return \think\Response
*/
public function index()
{
//
}
/**
* 显示创建资源表单页.
*
* @return \think\Response
*/
public function create()
{
//
}
/**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request)
{
//
}
/**
* 显示指定的资源
*
* @param int $id
* @return \think\Response
*/
public function read($id)
{
//
}
/**
* 显示编辑资源表单页.
*
* @param int $id
* @return \think\Response
*/
public function edit($id)
{
//
}
/**
* 保存更新的资源
*
* @param \think\Request $request
* @param int $id
* @return \think\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* 删除指定资源
*
* @param int $id
* @return \think\Response
*/
public function delete($id)
{
//
}
}
~~~
配合生成的资源控制器,我们只需要为资源控制器注册一个资源路由就可以实现RESTFul:
~~~
Route::resource('blog','index/Blog');
~~~
设置后会自动注册7个路由规则,分别对应资源控制器中的七个方法,如下:
|请求类型|生成路由规则|对应操作方法|
|----|----|----|
|GET |blog |index|
|GET |blog/create |create|
|POST |blog |save|
|GET |blog/:id |read|
|GET |blog/:id/edit |edit|
|PUT |blog/:id |update|
|DELETE |blog/:id |delete|
关于资源路由的详细讲解请参考官方的[《5.0路由完全指南》](http://www.kancloud.cn/thinkphp/route-master)中的(七)资源路由一章。
推荐使用资源控制器替代之前的REST控制器扩展(下一个大版本会废除think\controller\Rest控制器)。