backpack/revise-operation
Adds a Revise operation to Laravel Backpack CRUD list views, letting admins quickly edit a single field inline via a modal without opening the full edit form. Simple to configure and ideal for fast, focused updates.
composer require backpack/revise-operation — this pulls in venturecraft/revisionable as its engine. Check the version matrix against your Laravel/Backpack version first; revisionable is the slower-moving dependency and is usually the blocker. Aim for ^2.1.2 (see Gotchas — earlier 2.1.x releases don't validate the revision before restoring).php artisan vendor:publish --provider="Venturecraft\Revisionable\RevisionableServiceProvider" then php artisan migrate. Without the revisions table the operation renders, but every save silently has nowhere to write.use Venturecraft\Revisionable\RevisionableTrait; alongside CrudTrait.use Backpack\ReviseOperation\ReviseOperation;.revisions table and the published config/revisionable.php, then vendor/backpack/revise-operation/src/ — the operation class and its views are small and readable in one sitting.protected $revisionableFields = [...], plus $revisionableKeepUnversioned and $revisionableLimit. The default is every column, which is almost never what you want.$this->crud->denyAccess('revise') per profile, or wire the revise operation name into PermissionManager. Gate the line button too, so users don't see a button that 403s.save(), so observers, casts, validation, and model events all fire. Usually desirable — you get a fresh revision row and consistent behaviour — but watch for side effects like notification emails triggered by reverted state.--tag=views) to change columns, formatting, or branding rather than forking the package; the operation is thin enough that small view edits cover most customisation needs.revisionableSoftDeletes handling if you need the two to cooperate.venturecraft/revisionable, not in this package. When something looks wrong — missing rows, wrong user, fields not tracked — debug there first.^2.1.2 as a floor. Prior versions restored whatever revision ID was passed without checking the revision's type or that it belonged to the record being edited; 2.1.2 adds that validation before restoring. If you're on 2.1.0/2.1.1, upgrade rather than working around it — it's a small patch with no config changes.composer update is less likely to drift revisionable underneath you. That cuts both ways: you'll no longer get incidental transitive bumps, so still verify the revisionable/Laravel matrix yourself after a major Laravel upgrade.revisionable_id type matches and route-model binding resolves; check both when the revise page 404s. The 2.1.2 type/ownership check makes a mismatched key more likely to fail loudly on revert rather than silently writing the wrong data — treat a new rejection here as a signal your key configuration is off.RevisionableTrait registers boot hooks. If you add other booting traits later, re-test that saves still write revisions.spatie/laravel-activitylog plus a small custom Backpack operation is the natural replacement.select * from revisions where revisionable_id = ?) — the UI is thin enough that the table is the source of truth for what was actually recorded.How can I help you explore Laravel packages today?