Languages

Version

Theme

插件

开始

简介

虽然 Filament 几乎提供了构建优秀应用所需的任何工具,但有时你需要为应用添加自己的功能,或者作为其他开发人员可以引入到他们自己的应用中的可再分发软件包。这就是为什么 Filament 提供了一个插件系统,允许你扩展其功能。

在我们深入探讨之前,了解不同语境之下的“插件”非常重要。这里主要有两种语境:

  1. 面板插件:即用于面板构建器的插件。他们通常值用于在面板内添加功能或者作为一个完整的面板本身使用。示例有:
    1. 以 Widget 的形式添加特定功能到仪表盘的插件。
    2. 添加一套资源/功能到应用的插件,比如博客或者用户管理特性。
  2. 独立插件:即用于[面板构建器]上下文之外的插件。示例有:
    1. 用来添加自定义字段的插件,可与表单构造器一起使用。
    2. 用来添加自定义列或者过滤器的插件,可与表格构造器一起使用。

尽管在构建插件时需要记住这两种不同的心智环境,但它们可以在同一个插件中一起使用。它们并非必然相互排斥的。

重要概念

在我们深入探讨构建插件的细节之前,有一些概念需要理解。在构建插件之前,你应该熟悉以下内容:

  1. Laravel 包开发
  2. Spatie 包工具
  3. Filament 资源管理

插件对象

Filament 引入了用于配置插件的插件对象的概念。这个对象是一个简单的 PHP 类,它实现了 Filament\Contracts\Plugin 接口。该类用于配置插件,是插件的主要入口点。它同时用于注册插件可能使用的资源和图标。

虽然插件对象非常有用,但构建插件并不一定需要它。你仍然可以在不使用插件对象的情况下构建插件,正如在构建面板插件教程中看到的那样。

NOTE

插件对象只用于面板提供者。独立插件不使用此对象。独立插件的所有配置都应该在插件的服务提供者中处理。

注册资源

所有的资源注册 ,包括 CSS、JS 和 Alipine 组件,都应该通过插件的服务提供者在 packageBooted() 方法中完成。这允许 Filament 在资源管理器(Asset Manager)中注册资源,并在需要时加载它们。

创建插件

虽然你可以从头开始构建插件,我们建议你使用 Filament 插件框架以快速开始。该框架包含了所有样板代码,使你可以快速开始。

使用

要使用该框架,只需转到 GitHub 仓库并单击 “Use this template” 按钮。这将使用框架代码在你的帐户中创建一个新的仓库。之后,你可以将仓库克隆到你的计算机上。一旦你的机器上有了代码,导航到项目的根目录并运行以下命令:

php ./configure.php

该命令将会生成一系列问题用以配置插件。回答完所有问题后,脚本将为你添加一个新插件,你就可以开始构建 Filament 新扩展了。

升级已有插件

由于每个插件的使用范围和功能差异很大,因此升级现有插件没有一刀切的方法。然而,有一件事需要注意,这在所有插件中都一致的,那就是对 PluginServiceProvider 的弃用。

在你的插件服务提供者中,你需要将其改成继承 PackageServiceProvider。同时需要添加一个静态的 $name 属性到该服务提供者中。该属性用于将插件注入到 Filament。示例如下:

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. 面板插件开发
  3. 图标管理
  4. 颜色管理
  5. CSS 钩子
Edit on GitHub

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