开始
概述
虽然 Filament 几乎提供了构建出色应用程序所需的任何工具,但有时你需要添加自己的功能,供自己应用或者作为发行包让其他开发人员也可以在他们的应用程序使用。这就是为什么 Filament 提供了一个插件系统,允许你扩展其功能。
在我们深入研究之前,了解插件可以使用的不同语境是很重要的。主要有两种情况:
- 面板插件(Panel Plugin): 指的是用在后台面板中的插件。它们通常只用来在面板内部添加功能或者作为作为一个面板完整使用。示例:
- 以 Widget 的形式为仪表板添加特定功能的插件。
- 为应用程序添加一套资源/功能(如博客或用户管理功能)的插件。
- 独立插件(Standalone Plugins): 这些插件可以在面板生成器之外的任何上下文中使用。例如:
尽管在构建插件时需要记住这两种不同的语境,但它们可以在同一插件中一起使用。它们不必相互排斥。
重要概念
在我们深入研究构建插件的细节之前,有几个概念需要理解。在构建插件之前,你应该熟悉以下内容:
Plugin 对象
Filament v3 引入了一个 Plugin 对象,用于配置插件。该对象是一个简单的 PHP 类继承了 Filament\Support\Plugin 类。此类用于配置插件,而且是插件的主入口。也用作注册插件中可能使用的资源及图标。
虽然 plugin 对象十分有用,创建该对象却不是必须的。你仍然可以不使用 plugin 对象来创建插件,参考创建面板插件教程。
Info Plugin 对象只用于 Panel Providers。独立插件不使用该对象。所有独立插件的配置应该在插件的服务提供者中处理。
注册资源
所有的 资源注册,包括 CSS、JS 和 Alpine 组件,应该在插件服务提供者的 packageBooted() 方法中实现。它允许 Filament 使用资源管理器注册资源并在需要时加载。
创建插件
虽然你可以从头创建插件,我们建议你使用 Filament Plugin Skeleton 来快速开始。这个模板包括所有必要的样板,让你快速启动和运行。