Skip to content
全部文档

在 Blade 视图中渲染 Schema

WARNING

继续之前,请确认项目中已安装 filament/schemas。可通过运行以下命令检查:

bash
composer show filament/schemas

若尚未安装,请参阅安装指南,并按说明配置独立组件

设置 Livewire 组件

首先,生成一个新的 Livewire 组件:

bash
php artisan make:livewire ViewProduct

然后,在页面上渲染该 Livewire 组件:

blade
@livewire('view-product')

或者,你也可以使用整页 Livewire 组件:

php
use App\Livewire\ViewProduct;
use Illuminate\Support\Facades\Route;

Route::get('products/{product}', ViewProduct::class);

你必须在 Livewire 组件类上使用 InteractsWithSchemas trait,并实现 HasSchemas 接口:

php
use Filament\Schemas\Concerns\InteractsWithSchemas;
use Filament\Schemas\Concerns\RestrictsFileUploadsToSchemaComponents;
use Filament\Schemas\Contracts\HasSchemas;
use Livewire\Component;

class ViewProduct extends Component implements HasSchemas
{
    use InteractsWithSchemas;
    use RestrictsFileUploadsToSchemaComponents;

    // ...
}

添加 Schema

接下来,在 Livewire 组件中添加一个方法,接收 $schema 对象、对其进行修改并返回:

php
use Filament\Schemas\Schema;

public function productSchema(Schema $schema): Schema
{
    return $schema
        ->components([
            // ...
        ]);
}

最后,在 Livewire 组件的视图中渲染该 schema:

blade
{{ $this->productSchema }}

INFO

filament/schemas 还包含以下包:

  • filament/actions
  • filament/support

这些包允许你在 Livewire 组件中使用它们的组件。 例如,若你的 schema 使用了 Actions,请记得在 Livewire 组件类上实现 HasActions 接口并使用 InteractsWithActions trait。

若在 schema 中使用了其他 Filament 组件,请务必一并安装并集成对应的包。

文件上传的安全注意事项

InteractsWithSchemas trait 会在每个使用它的组件上暴露 Livewire 的文件上传 RPC 方法——无论该组件的 schema 是否包含上传字段。若你的 Livewire 组件可被你不希望其上传任意文件的用户访问,请添加 RestrictsFileUploadsToSchemaComponents trait。详情见将 Livewire 文件上传限制到 schema 组件