Skip to content
全部文档

快速开始

简介

Filament 几乎自带构建出色应用所需的各种工具,但有时你仍需添加自己的功能——仅供本应用使用,或做成可再分发的包供其他开发者引入。因此 Filament 提供了插件系统,以便扩展其能力。

开始之前,需要先了解插件可用的不同场景。主要有两种:

  1. Panel PluginsPanel Builder 一起使用的插件。通常用于在面板内增加功能,或本身就是一个完整面板。例如:
    1. 以 Widgets 形式为仪表盘增加特定功能的插件。
    2. 为应用增加一组 Resources / 功能的插件,如博客或用户管理。
  2. Standalone Plugins在 Panel Builder 之外任意场景使用的插件。例如:
    1. 为 [Form Builder](/5.x/forms/overview) 增加自定义字段的插件。
    2. 为 [Table Builder](/5.x/tables/overview) 增加自定义列或筛选器的插件。

构建插件时虽需区分这两种思路,但同一插件内可以同时使用,不必互斥。

重要概念

深入讲解如何构建插件之前,有几个重要概念需要了解。构建插件前请先熟悉:

  1. Laravel Package Development
  2. Spatie Package Tools
  3. Filament Asset Management

Plugin 对象

Filament 引入了用于配置插件的 Plugin 对象。它是一个实现 Filament\Contracts\Plugin 接口的简单 PHP 类,用于配置插件,也是插件的主入口,并用于注册插件可能用到的 Resources 与 Icons。

尽管 Plugin 对象非常有用,但并非构建插件的硬性要求。不使用它也能构建插件,参见 构建面板插件 教程。

INFO

Plugin 对象仅用于 Panel Provider。Standalone 插件不使用该对象。Standalone 插件的全部配置应在插件的 service provider 中处理。

注册资源(assets)

所有资源注册(包括 CSS、JS 与 Alpine Components)都应在插件 service provider 的 packageBooted() 方法中完成。这样 Filament 才能把资源注册到 Asset Manager,并在需要时加载。

创建插件

虽然可以从头手写插件,但我们推荐使用 Filament Plugin Skeleton 快速起步。该骨架包含必要样板代码,便于迅速上手。

用法

使用骨架:打开 GitHub 仓库并点击「Use this template」按钮,会在你的账号下用骨架代码新建仓库。随后克隆到本机,进入项目根目录并运行:

bash
php ./configure.php

脚本会提出一系列问题来配置插件。答完后会生成新插件骨架,你就可以开始为 Filament 构建出色的扩展了。

升级现有插件

每个插件的用途与功能差异很大,升级现有插件没有统一做法。但有一点对所有插件都适用:PluginServiceProvider 已弃用。

插件的 service provider 需改为继承 PackageServiceProvider,并添加静态 $name 属性,用于向 Filament 注册插件。示例如下:

php
class MyPluginServiceProvider extends PackageServiceProvider
{
    public static string $name = 'my-plugin';

    public function configurePackage(Package $package): void
    {
        $package->name(static::$name);
    }
}

升级插件前请完整阅读本指南,有助于理解相关概念及如何构建插件。

  1. Filament Asset Management
  2. Panel Plugin Development
  3. Icon Management
  4. Colors Management
  5. CSS Hooks