mansoor/filament-versionable

这是我的包 filament-versionable

v0.0.11 2024-09-23 05:40 UTC

This package is auto-updated.

Last update: 2024-09-23 05:41:47 UTC


README

Filament Versionable

Latest Version on Packagist run-tests GitHub Code Style Action Status Total Downloads

轻松管理 Filament 中的 Eloquent 模型版本。它包括

  • Filament 页面以显示变更差异以及谁进行了变更
  • 不同用户的修订列表
  • 恢复操作,可恢复模型到任何状态

安装

您可以通过 composer 安装此包

composer require mansoor/filament-versionable

然后,发布配置文件和迁移

php artisan vendor:publish --provider="Overtrue\LaravelVersionable\ServiceProvider"

最后,运行迁移

php artisan migrate

使用方法

Overtrue\LaravelVersionable\Versionable 特性添加到您的模型中,并设置 $versionable 属性。

注意:请确保添加 protected $versionStrategy = VersionStrategy::SNAPSHOT; 这将保存所有更改的 $versionable 属性。关于使用 VersionStrategy::DIFF 的不同错误报告

use Overtrue\LaravelVersionable\VersionStrategy;

class Post extends Model
{
    use Overtrue\LaravelVersionable\Versionable;

    protected $versionable = ['title', 'content'];

    protected $versionStrategy = VersionStrategy::SNAPSHOT;
}

创建一个显示修订的 Revisons 资源页面,它应该扩展 Mansoor\FilamentVersionable\RevisionsPage。如果您要为 ArticleResource 创建修订页面,它将看起来像

namespace App\Filament\Resources\ArticleResource\Pages;

use App\Filament\Resources\ArticleResource;
use Mansoor\FilamentVersionable\RevisionsPage;

class ArticleRevisions extends RevisionsPage
{
    protected static string $resource = ArticleResource::class;
}

接下来,将您刚创建的 ArticleRevisions 页面添加到您的资源中

use App\Filament\Resources\ArticleResource\Pages;

public static function getPages(): array
{
    return [
        ...
        'revisions' => Pages\ArticleRevisions::route('/{record}/revisions'),
    ];
}

RevisionsAction 添加到您的编辑/查看页面,此操作仅在查看/编辑的模型有版本时出现。

use Mansoor\FilamentVersionable\Page\RevisionsAction;

protected function getHeaderActions(): array
{
    return [
        RevisionsAction::make(),
    ];
}

您还可以将 RevisionsAction 添加到您的表格中。

use Mansoor\FilamentVersionable\Table\RevisionsAction;

$table->actions([
    RevisionsAction::make(),
]);

您已设置完毕!您的应用程序应存储模型状态,您可以在 Filament 中管理它们。

自定义

如果您想更改修订页面的 UI,您可以发布视图进行更改。

php artisan vendor:publish --tag="filament-versionable-views"

如果您想对版本存储有更多控制,您可以阅读 Laravel Versionable 文档

从差异中删除标签

您只需通过在修订页面内部重写 shouldStripTags 方法即可轻松从差异中删除/删除 HTML 标签。

class ArticleRevisions extends RevisionsPage
{
    protected static string $resource = ArticleResource::class;

    public function shouldStripTags(): bool
    {
        return true;
    }
}

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请审查 我们的安全策略 以了解如何报告安全漏洞。

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件