mansoor/filament-versionable
Filament plugin for managing Eloquent model revisions with Overtrue Laravel Versionable. View revision history, see diffs of what changed and who changed it, and restore any previous version from a dedicated Filament page.
RevisionsPage) and actions (RevisionsAction), ensuring consistency with the admin panel’s design system.RevisionsPage). Compatibility with Filament v3 is unsupported (per changelog).composer require overtrue/laravel-versionable).versions). Requires php artisan migrate post-installation.Versionable trait and $versionable array to Eloquent models. Snapshot strategy recommended (diff strategy has known bugs per README).showVersion breaking with UUIDs, but edge cases may persist for non-integer IDs.versions table joins).$versionable array and storage costs.)content fields)? (Configurable via shouldStripTags().)RevisionsAction.)php artisan make:filament-theme custom
@import '../../../../vendor/mansoor/filament-versionable/resources/css/plugin.css';
@source '../../../../vendor/mansoor/filament-versionable/resources/**/*.blade.php';
composer require mansoor/filament-versionable overtrue/laravel-versionable
php artisan vendor:publish --provider="Overtrue\LaravelVersionable\ServiceProvider"
php artisan migrate
Versionable trait and configure $versionable:
use Overtrue\LaravelVersionable\Versionable;
class Post extends Model {
use Versionable;
protected $versionable = ['title', 'content'];
protected $versionStrategy = VersionStrategy::SNAPSHOT;
}
RevisionsPage for each resource:
namespace App\Filament\Resources\PostResource\Pages;
use Mansoor\FilamentVersionable\RevisionsPage;
class PostRevisions extends RevisionsPage {
protected static string $resource = PostResource::class;
}
getPages():
public static function getPages(): array {
return [
'revisions' => PostRevisions::route('/{record}/revisions'),
];
}
RevisionsAction to edit/view pages or tables:
use Mansoor\FilamentVersionable\Page\RevisionsAction;
protected function getHeaderActions(): array {
return [RevisionsAction::make()];
}
Versionable trait to key models (e.g., Post, UserProfile).RevisionsPage and RevisionsAction to resources.versions table if needed).php artisan vendor:publish --tag="filament-versionable-views").versions table grows with usage. Consider:
$versionable attributes and VersionStrategy.How can I help you explore Laravel packages today?