概述
简介
资源是用来为你的 Eloquent 模型创建 CRUD 接口的静态类。它们描述了管理员如何使用表格和表单与应用中的数据进行交互。
创建资源
要为 App\Models\Customer 模型创建资源:
php artisan make:filament-resource Customer
这将在 app/Filament/Resources 目录中创建多个文件:
.
+-- Customers
| +-- CustomerResource.php
| +-- Pages
| | +-- CreateCustomer.php
| | +-- EditCustomer.php
| | +-- ListCustomers.php
| +-- Schemas
| | +-- CustomerForm.php
| +-- Tables
| | +-- CustomersTable.php
你的新资源类为 CustomerResource.php。
Page 目录中的类用于自定义应用中与资源交互的页面。它们是全页 Livewire 组件,你可以以你希望的方式自定义这些页面。
Schemas 目录中的类用于定义资源的表单和信息列表内容。Tables 目录中的类用来为资源创建表格。
TIP
我创建了一个资源,但它并 没有在导航菜单中显示?如果你有模型策略,请确保 viewAny() 方法返回 true。
简单(模态框)资源
有时,你的模型非常简单,你只想在一个页面上管理记录,并使用模态窗口来创建、编辑和删除记录。要生成一个包含模态窗口的简单资源,请执行以下操作:
php artisan make:filament-resource Customer --simple
你的资源将会有一个“管理”页面,该页面是一个添加了模态窗口的列表页面。
此外,你的简单资源将没有 getRelations() 方法,因为关联管理器仅显示在编辑和查看页面上,而简单资源中不存在这些页面。其他所有内容均相同。
自动生成表单和表格
如果你想节省时间,使用 --generate,Filament 可以根据模型的数据库字段自动为你生成表单和表格:
php artisan make:filament-resource Customer --generate
处理软删除
默认情况下,你将无法在应用中与已删除的记录进行交互。如果你想在资源中添加恢复、强制删除和过滤已删除记录的功能,请在生成资源时使用 --soft-deletes 标志:
php artisan make:filament-resource Customer --soft-deletes
了解更多的关于软删除的信息,请查看此处的软删除文档。
生成查看页面
默认情况下,只会生成列表页、创建页和编辑页。如果你想要生成查看页,请使用 --view 标志:
php artisan make:filament-resource Customer --view
指定自定义模型命名空间
默认情况下,Filament 会假定你的模型位于 App\Models 目录中。你可以使用 --model-namespace 标志为模型传入不同的命名空间:
php artisan make:filament-resource Customer --model-namespace=Custom\\Path\\Models
本例中,模型应该位于 Custom\Path\Models\Customer。请注意命令中需要使用双斜杠 \\。
现在当生成资源时,Filament 将能够定位模型并读取其数据库 Schema。
同时生成模型、迁移及工程
如果你想在搭建资源时节省时间,Filament 还可以使用 --model、--migration 和 --factory 标志的任意组合同时为新资源生成模型、迁移和工厂:
php artisan make:filament-resource Customer --model --migration --factory