插件开发
概述
Filament 插件的基础是 Laravel 包。它们通过 Composer 安装到 Filament 项目中,并遵循所有标准技术,如使用服务提供商注册路线、视图和翻译。如果你是 Laravel 软件包开发的新手,这里有一些资源可以帮助你掌握核心概念:
- Laravel 文档的包开发章节 是一个很好的参考指南。
- Spatie 的包训练教程 是一个很好的说明视频,一步步教你处理过程。
- Spatie 的包工具 允许你使用 Fluent 配置对象简化服务提供者类。
Filament 插件是基于 Laravel 包的概念构建的,允许你为任何 Filament 面板提供和使用可重复使用的功能。它们可以一次添加到每个面板中,每个面板也可以进行不同的配置。
使用插件类配置面板
Plugin 插件类允许你的包与面板配置 文件进行互动。它是一个实现 Plugin 接口的简单 PHP 类。3 个方法是必须的:
getId()方法返回该插件的唯一标识符。请确保它足够具体,不会与同一项目中可能使用的其他插件发生冲突。register()方法允许你使用面板可用的配置选项。包括注册资源、页面、主题、渲染钩子等到。- 只有当面板中注册的插件被实际使用时才会运行。它由中间件类执行。
<?php
namespace DanHarrin\FilamentBlog;
use DanHarrin\FilamentBlog\Pages\Settings;
use DanHarrin\FilamentBlog\Resources\CategoryResource;
use DanHarrin\FilamentBlog\Resources\PostResource;
use Filament\Contracts\Plugin;
use Filament\Panel;
class BlogPlugin implements Plugin
{
public function getId(): string
{
return 'blog';
}
public function register(Panel $panel): void
{
$panel
->resources([
PostResource::class,
CategoryResource::class,
])
->pages([
Settings::class,
]);
}
public function boot(Panel $panel): void
{
//
}
}
插件用户可以通过实例化插件类,并将其传入到配置的 plugin() 方法中,来将其加入面板中。
use DanHarrin\FilamentBlog\BlogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(new BlogPlugin());
}