组件

在 Blade 视图中渲染 Schema

NOTE

继续之前,请确保项目中已经安装了 filament/schemas。你可以运行如下命令检查是否已安装:

composer show filament/schemas

如果还未安装,请转到安装指南,并根据指示配置单个组件

设置 Livewire 组件

首先,生成新的 Livewire 组件:

php artisan make:livewire ViewProduct

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

@livewire('view-product')

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

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

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

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

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

然后,请添加一个接受 $schema 对象的方法到 Livewire 组件,修改并返回它:

use Filament\Schemas\Schema;

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

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

{{ $this->productSchema }}

NOTE

filament/schemas 也包含以下这些包:

  • filament/actions
  • filament/support

这些包允许你在 Livewire 组件中使用它们的组件。

比如,如果你的 Schema 中使用了 Action,请记住实现 HasActions 接口并在 Livewire 组件类中使用 InteractsWithActions trait。

如果你在 Schema 中使用其他 Filament 组件,请确保同时安装并集成对应的包。

Security considerations for file uploads

The InteractsWithSchemas trait exposes Livewire’s file upload RPC methods on every component that uses it — whether or not the component’s schema contains an upload field. If your Livewire component is reachable to users you do not want uploading arbitrary files, add the RestrictsFileUploadsToSchemaComponents trait. See Restricting Livewire file uploads to schema components for details.

Edit on GitHub

Still need help? Join our Discord community or open a GitHub discussion

Previous
在面板外渲染通知