laravel基础学习笔记--控制器篇

控制器篇


创建一个新的控制器

php artisan make:controller TestController

控制器

class TestController extends Controller
{
    public function test(){
        dd('test');
    }
}

定义一个指向控制器的路由

Route::get('/test',[\App\Http\Controllers\TestController::class,'test']);
//test是路由,\App\Http\Controllers\TestController::class是控制器路径
//'test'是这个路由指向控制器的办法

在指向的同时还可以带参数

Route::get('/test/{id}', [\App\Http\Controllers\TestController::class, 'test']);
//必须参数要一致才可匹配

创建一个单行为的控制器
当注册单个行为控制器的路由时不需要指名方法就可以使用,它会自己去找办法使用

php artisan make:controller ShowController --invokable

资源型控制器

Laravel 的资源路由通过单行代码即可将典型的「CURD (增删改查)」路由分配给控制器。

创建资源型控制器命令

php artisan make:controller PhotoController --resource

资源控制器操作处理

Verb路由方法路由命名
GET/photosindexphotos.index
GET/photos/createcreatephotos.create
POST/photosstorephotos.store
GET/photos/{photo}showphotos.show
GET/photos/{photo}/editeditphotos.edit
PUT/PATCH/photos/{photo}updatephotos.update
DELETE/photos/{photo}destroyphotos.destroy

注册资源路由

//注册资源路由
Route::resource('phone', \App\Http\Controllers\PhoneController::class);
//资源路由会帮我们生成增删改查路由,不需要我们特别的去定义

部分资源路由
当声明资源路由时,你可以指定控制器处理的部分行为,而不是所有默认的行为

//部分资源路由--排除
Route::resource('email', \App\Http\Controllers\PhoneController::class)->except([
   'create','store','update','destroy'
]);
//部分资源路由--包含
Route::resource('email', \App\Http\Controllers\PhoneController::class)->only([
   'index','show'
]);

API资源路由
当声明用于 APIs 的资源路由时,通常需要排除显示 HTML 模板的路由

生成API资源控制器

php artisan make:controller API/PhotoController --api

注册API资源路由

Route::apiResource('photos', PhotoController::class);

命名资源路由
默认情况下,所有的资源控制器行为都有一个路由名称。你可以传入 names 数组来覆盖这些名称:

Route::resource('photos', PhotoController::class)->names([
    'create' => 'photos.build'
]);

命名资源路由参数
可以更改或设置路由的参数

Route::resource('users', AdminUserController::class)->parameters([
    'users' => 'admin_user'
]);

补充资源控制器
有时候默认生成的资源控制器并不够用,这就需要去多加一些方法

Route::get('photos/addPhone', [PhotoController::class, 'addPhone']);
posted @   小信吖  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示