Laravel 的资源控制器可以让我们很便捷地构建基于资源的 RESTful 控制器。
1. 创建资源控制器
资源控制器创建命令:
php artisan make:controller UserController --resource
查看创建好的资源控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
return '所有用户列表';
}
public function create()
{
return '创建新用户的表单';
}
public function store(Request $request)
{
return '保存一个新的用户的逻辑';
}
public function show($id)
{
return '用户的ID是'.$id;
}
public function edit($id)
{
return '修改用户信息的表单';
}
public function update(Request $request, $id)
{
return '修改用户信息的逻辑';
}
public function destroy($id)
{
return '删除用户成功';
}
}
2. 注册资源路由
在routes目录下的路由文件中添加:
//创建单个资源路由
Route::resource('users','UserController');
//创建多个资源路由
Route::resources([
'users' => 'UserController',
'member' => 'MemberController'
]);
查询注册路由
php artisan route:list
+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+
| | GET|HEAD | / | | App\Http\Controllers\SiteController@index | web |
| | GET|HEAD | about | | App\Http\Controllers\SiteController@about | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | users | users.index | App\Http\Controllers\UserController@index | web |
| | POST | users | users.store | App\Http\Controllers\UserController@store | web |
| | GET|HEAD | users/create | users.create | App\Http\Controllers\UserController@create | web |
| | GET|HEAD | users/{user} | users.show | App\Http\Controllers\UserController@show | web |
| | PUT|PATCH | users/{user} | users.update | App\Http\Controllers\UserController@update | web |
| | DELETE | users/{user} | users.destroy | App\Http\Controllers\UserController@destroy | web |
| | GET|HEAD | users/{user}/edit | users.edit | App\Http\Controllers\UserController@edit | web |
+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+
资源控制器处理动作
动词 | URL | 方法 | 路由名称 | 作用 |
---|---|---|---|---|
GET | /user | index | user.index | 查询所有资源 |
GET | /user/create | create | user.create | 显示创建资源的界面 |
GET | /user/{id} | show | user.show | 显示指定id的资源 |
POST | /user | store | user.store | 创建资源 |
GET | /{id}/edit | edit | user.edit | 根据id显示对应编辑资源的页面 |
PUT/PATCH | /user/{id} | update | user.update | 根据id编辑对应的资源 |
DELETE | /user/{id} | destroy | user.destroy | 根据id删除对应资源 |
3. 伪造表单方法
由于 HTML 表单不能发起PUT、PATCH和DELETE请求,需要添加一个隐藏的 _method 字段来伪造 HTTP 请求方式,辅助函数 method_field 可以帮我们做这件事:
{{ method_field('PUT') }}