filamentboot/filamentboot-rich-editor

基于 Filament 5 内置 Tiptap RichEditor 的增强版富文本编辑器插件,含媒体库图片上传、XSS 过滤、磁盘联动。

Maintainers

Package info

github.com/filamentboot/filamentboot-rich-editor

Wiki

Documentation

pkg:composer/filamentboot/filamentboot-rich-editor

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.5.3 2026-06-24 09:15 UTC

This package is auto-updated.

Last update: 2026-06-24 09:41:41 UTC


README

基于 Filament 5 内置 Tiptap RichEditor 的增强版富文本编辑器插件,含媒体库图片上传、XSS 过滤、磁盘联动。

简介

本包在 Filament 5 内置 Tiptap RichEditor 基础上进行扩展,提供 RichEditorField 字段组件。图片上传磁盘动态读取后台 UploadSettings.default_disk,支持 osscospublic 等磁盘,并可通过 ->disk() 在组件级单独覆盖;保存前的 HTML 内容经 mews/purifier 过滤,防止 XSS 注入。

要求

  • PHP ^8.3、Laravel ^13、Filament ^5
  • 依赖主包 filamentboot/filamentboot ^0.5
  • mews/purifier ^3.4(HTML XSS 过滤)

安装

composer require filamentboot/filamentboot-rich-editor

发布配置文件(可选):

php artisan vendor:publish --tag=filamentboot-rich-editor-config

使用

1. 注册插件

app/Providers/Filament/AdminPanelProvider.php 中注册:

use Filamentboot\FilamentbootRichEditor\RichEditorPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugins([
            RichEditorPlugin::make(),
        ]);
}

2. 在表单中使用

use Filamentboot\FilamentbootRichEditor\Forms\RichEditorField;

RichEditorField::make('content')
    ->label('内容')
    ->columnSpanFull(),

指定组件级上传磁盘(优先于全局 UploadSettings):

RichEditorField::make('content')
    ->disk('oss'),   // 或 'cos'、'public'

3. XSS 过滤

在 Resource 的 mutateFormDataBeforeSave 中调用净化器:

use Filamentboot\FilamentbootRichEditor\Support\RichEditorPurifier;

protected function mutateFormDataBeforeSave(array $data): array
{
    $data['content'] = app(RichEditorPurifier::class)->clean($data['content']);
    return $data;
}

禁止直接使用 {!! $html !!} 输出未经过滤的富文本内容。

许可

MIT License,详见 LICENSE