php artisan make:controller 默认创建空控制器,位于 app/Http/Controllers,不带方法;资源控制器需手动注册路由,隐式绑定依赖参数名与类型提示一致,且仅对 show/edit/update/destroy 生效。
用
创建普通控制器
默认生成的是空控制器,不带任何方法,适合自定义逻辑。执行命令后会在
下创建 PHP 文件。
常见错误:运行完命令没加
却以为自带
方法;或者忘了在路由里绑定,导致 404。
加
参数可同时创建对应模型(但不会自动关联,只是省去手动建模型的步骤)
加
是冗余的(新版 Laravel 默认就是 plain,不带 CRUD 方法)
如果控制器要放在子目录,比如
,命令写成
,注意斜杠不用转义
类名必须符合 PascalCase,且与文件名严格一致,否则自动加载失败
用
生成资源控制器
这是最常被误用的点:它只生成类文件和七个标准方法(
、
、
等),**不会自动注册路由**。很多人跑完命令就去访问
,结果 404。
资源控制器本质是代码模板,不是开箱即用的功能模块。
加
会去掉
和
这两个返回视图的方法,更适合前后端分离项目
方法命名和 HTTP 动词映射是固定的,不能靠参数改(比如没法让
对应 POST),要改就得手动重写路由
如果已有同名控制器,命令会报错,不会覆盖,得先删文件或换名
和
方法默认用
方法做表单验证,但实际项目中更常用
类,这时得手动替换掉验证逻辑
路由注册时别漏掉
和命名
资源路由用
注册后,所有方法默认无中间件。登录态控制、API 认证、权限检查都得显式加。
Laravel 13.2.0
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
下载
另外,Laravel 的命名路由(如
)在跳转和生成 URL 时非常依赖,漏命名会导致
函数报错。
批量加中间件:
给单个动作加中间件:
改命名前缀:
,这样
才能用
如果控制器方法名被改过(比如把
改成
),对应路由会失效,必须用
显式映射
资源控制器的「隐式绑定」要小心字段名
当路由定义为
,且控制器方法签名是
,Laravel 会自动按主键查模型——但前提是路由参数名和类型提示的变量名一致,且模型主键是
。
一旦你把主键改成
或字段叫
,又没配
,就会抛出
。
在模型里加
可切换查找字段
如果路由参数是
,但类型提示还是
,绑定会失败,必须同步改变量名为
资源路由的隐式绑定只对
、
、
、
生效,
和
不走这逻辑
控制器本身不难生成,真正卡住人的永远是路由怎么连、中间件怎么套、绑定字段对不对——这些地方一错,请求根本到不了方法里。
php artisan make:controllerapp/Http/Controllers--invokable__invoke-m--plainApi/V1/UsersControllerphp artisan make:controller Api/V1/UsersControllerphp artisan make:controller --resourceindexcreatestore/posts--apicreateeditindexstoreupdatevalidateFormRequest->middleware()Route::resource('posts', [PostController::class])posts.indexroute()->middleware(['auth', 'can:view,App\Models\Post'])->only(['index', 'show'])->middleware('cache.headers')->names('admin.posts')route('admin.posts.index')indexlistAll->actions()/posts/{post}show(Post $post)iduuidpost_idgetRouteKeyName()ModelNotFoundExceptionpublic function getRouteKeyName() { return 'slug'; }{post_slug}Post $post$post_slugshoweditupdatedestroyindexcreate