feat: add admin env badge, quick post button, and harden plugin enable
Show local/prod in the Filament topbar, jump to create post in one click, tighten sidebar spacing, and stop Hello World from 500ing when its tables are missing. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+23
-18
@@ -27,15 +27,17 @@ plugins/{vendor}.{name}/
|
||||
"provider": "Plugins\\Vendor\\Name\\ServiceProvider",
|
||||
"requires": ["neatstudio.payment"],
|
||||
"filament_pages": ["Plugins\\Vendor\\Name\\Filament\\Pages\\SettingsPage"],
|
||||
"filament_resources": ["Plugins\\Vendor\\Name\\Filament\\Resources\\OrderResource"]
|
||||
"filament_resources": [
|
||||
"Plugins\\Vendor\\Name\\Filament\\Resources\\OrderResource"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| `provider` | 入口类 FQCN;缺省时自动推断 `src/ServiceProvider.php` |
|
||||
| `requires` | 依赖的其他插件(如会员依赖支付),按 `vendor.name` 引用 |
|
||||
| `usage` | 使用说明(换行文本),后台插件卡片可折叠查看 |
|
||||
| 字段 | 说明 |
|
||||
| --------------------------------------- | ------------------------------------------------------------------------ |
|
||||
| `provider` | 入口类 FQCN;缺省时自动推断 `src/ServiceProvider.php` |
|
||||
| `requires` | 依赖的其他插件(如会员依赖支付),按 `vendor.name` 引用 |
|
||||
| `usage` | 使用说明(换行文本),后台插件卡片可折叠查看 |
|
||||
| `filament_pages` / `filament_resources` | 注册到后台的页面/资源(由 `PluginPages` 汇总,统一归入「插件」导航分组) |
|
||||
|
||||
## 依赖管理(requires 强制校验)
|
||||
@@ -82,26 +84,27 @@ class ServiceProvider extends PluginServiceProvider
|
||||
|
||||
### addAction(hook, callback, priority) — 无返回值
|
||||
|
||||
| Hook | 参数 | 用途 |
|
||||
|------|------|------|
|
||||
| `comment.created` | `Comment` | 新评论创建(AI 审核在此监听) |
|
||||
| `payment.paid` | `Payment` | 支付成功(按 `$payment->payable` 分发:订阅激活/解锁) |
|
||||
| `filament.post_form` | `Schema` | 文章编辑表单追加字段(会员付费设置在此注入) |
|
||||
| `filament.post_table` | `Table` | 文章列表追加列/操作/过滤 |
|
||||
| Hook | 参数 | 用途 |
|
||||
| --------------------- | --------- | ------------------------------------------------------ |
|
||||
| `comment.created` | `Comment` | 新评论创建(AI 审核在此监听) |
|
||||
| `payment.paid` | `Payment` | 支付成功(按 `$payment->payable` 分发:订阅激活/解锁) |
|
||||
| `filament.post_form` | `Schema` | 文章编辑表单追加字段(会员付费设置在此注入) |
|
||||
| `filament.post_table` | `Table` | 文章列表追加列/操作/过滤 |
|
||||
|
||||
### addFilter(hook, callback, priority) — 返回值传给下一个过滤器
|
||||
|
||||
| Hook | 签名 | 用途 |
|
||||
|------|------|------|
|
||||
| `post.rendered` | `(string $html, Post $post): string` | 文章渲染后处理(付费内容过滤、paywall) |
|
||||
| `seo.structured_data` | `(array $data): array` | 扩展 JSON-LD 结构化数据 |
|
||||
| `payment.gateway` | `(array $gateways): array` | 注册支付渠道 |
|
||||
| Hook | 签名 | 用途 |
|
||||
| --------------------- | ------------------------------------ | --------------------------------------- |
|
||||
| `post.rendered` | `(string $html, Post $post): string` | 文章渲染后处理(付费内容过滤、paywall) |
|
||||
| `seo.structured_data` | `(array $data): array` | 扩展 JSON-LD 结构化数据 |
|
||||
| `payment.gateway` | `(array $gateways): array` | 注册支付渠道 |
|
||||
|
||||
## 后台注入(Filament 表单 / 表格)
|
||||
|
||||
核心资源的表单/表格会触发 `filament.post_form` / `filament.post_table` 两个钩子,插件可追加自己的字段与列,停用插件后字段自动消失,核心零侵入。
|
||||
|
||||
> 注意:`Schema::components()` 与 `Table::columns()` 都是**整体替换**语义,追加要这样写:
|
||||
>
|
||||
> - 表单:`$schema->components([...$schema->getComponents(), Section::make(...)])`
|
||||
> - 表格:`$table->pushColumns([...])`
|
||||
|
||||
@@ -152,7 +155,9 @@ public function payableUrl(): ?string { return route('filament.admin.resources.
|
||||
|
||||
## 迁移
|
||||
|
||||
插件迁移放在 `database/migrations/`,`app/Providers/AppServiceProvider` 启动时自动注册,`php artisan migrate` 会一并执行(无需手动 --path)。
|
||||
插件迁移放在 `database/migrations/`,`app/Providers/AppServiceProvider` 启动时自动注册,`php artisan migrate` 会一并执行(无需手动 --path)。后台**启用插件**时也会单独跑该插件目录下的迁移,避免启用后立刻访问插件页面因缺表 500。
|
||||
|
||||
插件 `boot` 与钩子(action/filter)失败会被隔离并写入日志,单个插件异常不应拖垮整站。
|
||||
|
||||
## 打包与安装
|
||||
|
||||
|
||||
Reference in New Issue
Block a user