尽管 Filament 提供了你构建优秀应用所需的几乎所有工具,有时你需要添加自己的功能无论是仅用于你的应用还是作为供其他开发者在其应用中包含的可分发软件包。这就是为什么 Filament 提供了一个插件系统,允许你扩展其功能。
在深入探讨之前,理解插件能够被使用的不同上下文非常重要。主要有两种上下文:
尽管在构建插件时需要记住这两种不同的心智上下文,但它们可以在同一个插件内协同使用。它们不必是互斥的。
在我们深入探讨构建插件的具体细节之前,有一些重要的概念需要理解。在构建插件之前,您应该熟悉以下内容:
Filament 引入了 Plugin 对象的概念,该对象用于配置插件。 此对象是一个简单的 PHP 类,它实现了 Filament\Contracts\Plugin 接口。 此类用于配置插件,并且是插件的主要入口点。 它也用于注册您的插件可能使用的 Resources 和 Icons。
尽管 plugin object 对象非常有帮助,但它不是构建插件的必需品。您仍然可以在不使用 plugin object 对象的情况下构建插件,具体可见构建面板插件教程。
Plugin 对象仅供面板提供者使用。独立插件不使用此对象。独立插件的所有配置都应在其插件的服务提供者中处理。
所有 资产注册,包括 CSS、JS 和 Alpine 组件,都应通过插件的服务提供者在 packageBooted() 方法中完成。这使得 Filament 能够向资产管理器注册这些资产,并在需要时加载它们。
虽然你当然可以从头开始构建插件,但我们建议使用Filament 插件骨架以快速入门。这个骨架包含了所有必要的样板代码,以让你快速启动并运行。
要使用此骨架,只需前往 GitHub 仓库并点击“使用此模板”按钮。这将在您的帐户中创建一个带有骨架代码的新仓库。之后,您可以将该仓库克隆到您的机器上。一旦您在机器上获取到代码,导航到项目根目录并运行以下命令:
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);
}
}请在升级您的插件之前完整阅读本指南。它将帮助您理解概念以及如何构建您的插件。