基础控制器
使用命令生成一个基础控制器:
php artisan make:controller UserController
或者直接在app/Http/Controllers目录下手动创建一个class类文件,命名UserController然后继承基类Controller和use Illuminate\Http\Request;这样的基础控制器就能使用Controller的一些自带方法和传递的参数了

单行为控制器
如果一个控制器动作特别复杂,你会发现将整个控制器类专用于哪个单一动作是方便的。要实现这一点,你可以在控制器中定义一个单一的 __invoke
方法用以下命令生成单行为控制器:
php artisan make:controller OneController --invokable
也可以手动创建一个控制器然后继承Controller然后再创建一个__invoke
方法

这个单行为控制器创建好之后创建对应路由就不用写方法名只需要调用到控制器就行了,会自动调用控制器下的这个唯一的方法例如:
Route::get('one',OneController::class);
资源控制器
资源控制器是针对每个资源执行相同的一组动作,将典型的创建、读取、更新和删除(”CRUD”)路由分配给一个控制器。命令如下:
php artisan make:controller UserController --resource
执行后会获得一个user控制器,自带7个方法,分别是index、create、store、show、edit、update、destroy。配置好路由后会自动生成相关内容,这里只需要配置资源路由既可,不需要吧七个方法都单独写路由
//单个资源路由
Route::resource('user',UserController::class);
//批量注册资源路由,注意单个是resource,批量是resources
Route::resources([
'user'=>UserController::class,
'test'=>TestController::class
]);
请求类型 | 路由URI | 控制器方法 | 路由命名 | 描述 |
GET | user | index() | user.index | 获取数据列表 |
GET | user/create | create() | user.create | 新增页面(数据表单页面) |
POST | user | store() | user.store | 新增数据接收处理方法 |
GET | user/{user} | show() | user.show | 获取一条数据详情 |
GET | user/{user}/edit | edit() | user.edit | 编辑表单页面 |
PUT/PATH | user/{user} | update() | user.update | 编辑提交处理页面 |
DELETE | user/{user} | destroy() | user.destroy | 删除数据 |
资源路由也支持开放部分和排除部分
//只开放index和show
Route::resource("user",UserController::class)->only(['index','show']);
//排除index和show
Route::resource("user",UserController::class)->except(["index","show"]);
api资源路由
api资源路由和普通资源路由的区别在于不需要用于显示页面的路由
api资源控制器生成命令:
php artisan make:controller UserController --api
api资源路由:
//单个api资源路由
Route::apiResource("user",UserController::class);
//批量资源路由
Route::apiResources([
"user" => UserController::class,
"test" => TestController::class,
]);
嵌套资源
开发中遇到两个资源相互之间存在依赖关系的,例如文章和评论,就可以使用嵌套资源
资源路由嵌套
use App\Http\Controllers\CommentController;
Route::resource("article.comment",CommentController::class);
这样写就会自动帮我们生成对应的路由
请求类型 | 路由URI | 控制器方法 | 路由命名 | 描述 |
GET | /article/{article}/comments | index() | article.comments.index | 查看文章下所有评论 |
GET | /article /{article }/comments/create | create() | article.comments.create | 跳转文章新增评论页面 |
POST | / | store() | article.comments.store | 提交文章评论 |
GET | / /comments/{comment} | show() | comments.show | 查看文章下的评论 |
GET | / /comments/{comment}/edit | edit() | comments.edit | 显示编辑指定文章下的指定评论页面 |
PUT/PATCH | / /comments/{comment} | update() | comments.update | 跳转编辑评论页面 |
DELETE | / /comments/{comment} | destroy() | comments.destroy | 删除指定评论 |