Prevent Outdated Record Update
Prevents users from updating outdated records by halting the update process and notifying them.
Author:
Balis Matzouranis
Documentation
A Filament plugin that prevents users from updating outdated records.
When an outdated record is detected, the update process is stopped and a notification is shown to the user.
A record is considered outdated when it has been modified more recently by
another user or when its changes have already been saved. This check is
performed based on the updated_at attribute.
#Requirements
- PHP 8.2 or higher
- Laravel 11.28 or higher
- Filament 5
#Installation
Require the package using Composer:
composer require 'balismatz/filament-prevent-outdated-record-update:^5.0'
#Translate the notification
Currently, the notification text is available in English (en) and Greek (el).
If you want to add your own translations or customize the existing ones, publish the language files:
php artisan vendor:publish --provider="BalisMatz\FilamentPreventOutdatedRecordUpdate\FilamentPreventOutdatedRecordUpdateServiceProvider"
Pull requests for additional language translations are welcome.
#Usage
#Edit action
To prevent outdated record updates on edit action, call the
preventOutdatedRecordUpdate() method.
EditAction::make()
->label('Edit record')
->preventOutdatedRecordUpdate()
The package uses the beforeFormValidated() action hook. If you are also
using this hook, you must call it before the
preventOutdatedRecordUpdate() method.
EditAction::make()
->label('Edit record')
->beforeFormValidated(function () {
// ...
})
->preventOutdatedRecordUpdate()
#Edit record (page)
To prevent outdated record updates on the edit record (page), use the
PreventsOutdatedRecordUpdate trait.
<?php
namespace App\Filament\Resources\Posts\Pages;
use BalisMatz\FilamentPreventOutdatedRecordUpdate\Concerns\PreventsOutdatedRecordUpdate;
use Filament\Resources\Pages\EditRecord;
class EditPost extends EditRecord
{
use PreventsOutdatedRecordUpdate;
// ...
}
The package uses the beforeSave() hook. If you are also using this hook,
you can use the PreventsOutdatedRecordUpdate trait, as shown in the
following example:
<?php
namespace App\Filament\Resources\Posts\Pages;
use BalisMatz\FilamentPreventOutdatedRecordUpdate\Concerns\PreventsOutdatedRecordUpdate;
use Filament\Resources\Pages\EditRecord;
class EditPost extends EditRecord
{
use PreventsOutdatedRecordUpdate {
beforeSave as preventsOutdatedRecordUpdateBeforeSave;
}
// ...
protected function beforeSave(): void
{
// ...
$this->preventsOutdatedRecordUpdateBeforeSave();
// ...
}
// ...
}
#License
Filament Prevent Outdated Record Update is open-sourced software licensed under the MIT license.
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
Spotlight Pro
Browse your Filament Panel with ease. Filament Spotlight Pro adds a Spotlight/Raycast like Command Palette to your Filament Panel.
Dennis Koch