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 组件。