mansoor / filament-versionable
这是我的包 filament-versionable
Requires
- php: ^8.1
- filament/filament: ^3.0
- illuminate/contracts: ^10.0|^11.0
- overtrue/laravel-versionable: ^5.1
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
README

Filament Versionable
轻松管理 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)。有关更多信息,请参阅 许可证文件。