Restore or Create
Restore or Create is a plugin that helps prevent duplicate records by detecting and restoring soft-deleted models when similar data is submitted via a create form.
Author:
Martin Petričko
Documentation
- Features
- Installation
- Usage
- Customization
- Advanced Integration
- Testing
- Contributing
- Security Vulnerabilities
- Credits
- License
Restore or Create is a FilamentPHP plugin that helps prevent duplicate records by detecting and restoring soft-deleted models when similar data is submitted via a create form.
#Features
- Detects similar soft-deleted records before creating a new one.
- Displays a modal with details and an option to restore the deleted record.
- Fully customizable detection, display, and behavior logic.
#Installation
Install via Composer:
composer require martinpetricko/filament-restore-or-create
Optionally, publish the translation files:
php artisan vendor:publish --tag="filament-restore-or-create-translations"
#Usage
Add CheckDeleted trait to your resource's CreateRecord page:
use MartinPetricko\FilamentRestoreOrCreate\Concerns\CreateRecord\CheckDeleted;
class CreateUser extends CreateRecord
{
use CheckDeleted;
protected static string $resource = UserResource::class;
}
#Customization
#Attributes to check
Define which fields should be used to detect similar deleted records:
protected function checkDeletedAttributes(): array
{
return ['name', 'email', 'phone'];
}
#Custom Query Logic
Override the default query to define your own matching logic:
protected function checkDeletedModel(array $data): ?Model
{
return static::getResource()::getEloquentQuery()
->whereLike('name', '%' . $data['name'] . '%')
->onlyTrashed()
->latest()
->first();
}
#Modal Display Fields
Choose which attributes to show in the confirmation modal:
protected function showDeletedAttributes(): ?array
{
return ['name', 'email', 'phone', 'address', 'deleted_at'];
}
#Restore Notification
Customize the notification shown after a record is restored:
protected function getRestoredNotification(): ?Notification
{
return Notification::make()
->success()
->title('Restored');
}
#Redirect After Restore
Control where the user is redirected after restoring:
protected function getRestoreRedirectUrl(Model $record): string
{
/** @var class-string<Resource> $resource */
$resource = static::getResource();
if ($resource::hasPage('edit') && $resource::canEdit($record)) {
return $resource::getUrl('edit', ['record' => $record]);
}
return $resource::getUrl();
}
#Advanced Integration
If you override beforeCreate, ensure the restore behavior is still called:
class CreateUser extends CreateRecord
{
use CheckDeleted {
beforeCreate as checkDeletedBeforeCreate;
}
protected function beforeCreate(): void
{
$this->checkDeletedBeforeCreate();
// Your custom logic
}
}
#Testing
composer test
#Contributing
Please see CONTRIBUTING for details.
#Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
#Credits
#License
The MIT License (MIT). Please see License File for more information.
The author
I began my programming journey in elementary school as a hobby, which grew into a passion. Since then, I have consistently pursued growth and creating effective solutions. Specializing in back-end development, I prioritize writing clean, maintainable, and standards-compliant code.
From the same author
Sentry User Feedback
Sentry User Feedback integration.
Author:
Martin Petričko
Database Mail
Are you tired of writing email templates in laravel, managing all translations and editing them always when something changes? Well not anymore! Let your clients manage them in filament panel and call it a feature!
Author:
Martin Petričko
Featured Plugins
A selection of plugins curated by the Filament team
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Data Lens
Advanced Data Visualization for Laravel Filament - a premium reporting solution enabling custom column creation, sophisticated filtering, and enterprise-grade data insights within admin panels.
Padmission
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle