Editing & dated updates.
Install the complete review experience, choose an interface, and configure customer and team workflows.
← All Pro topicsEditing
Author editing and dated follow-ups use two optional tables:
php artisan vendor:publish --tag=review-rateable-pro-editing-migrations
php artisan migrate
'editing' => [
'enabled' => true,
'ability' => null,
'require_reapproval' => true,
'updates_enabled' => true,
'update_label' => 'EDIT',
'update_min_length' => 2,
'update_max_length' => 5000,
'changes_per_minute' => 10,
],
The author's card displays Manage your review. Authors can edit their text, ratings, recommendation, enabled title, and enabled photos. Removed/reordered photos are draft changes until saved.
A dated update preserves the main review, for example EDIT — [server date]: My experience after a month…. Customize update_label to EDIT, UPDATE, or other plain text. Notes are append-only through this interface; there is no full revision history or note edit/delete workflow.
You can render the editor directly on an authorized author page:
<livewire:review-rateable-pro-review-edit-form
:reviewable="$product"
:review-id="$review->id"
:key="'review-editor-'.$review->id" />
Ownership is mandatory. An optional editing ability adds restrictions but cannot let an administrator impersonate another author to edit their review. The create ability is not reused; define editing eligibility separately if it can expire.
By default, a real edit/update makes the entire review pending, removing it from public cards and statistics until approved again. There is no separate public approved revision while edits await review. Disabling reapproval preserves its current approval state but never approves an already-pending review. New content-filter matches always force moderation.
Stale tabs are rejected using versions and content fingerprints. Reload saved review (discard draft) intentionally abandons the local draft. Votes and replies are retained; verification rechecks if enabled.
Custom integrations should use the authenticated editing service, supplying a fresh version and fingerprint:
use Codebyray\ReviewRateablePro\Services\ReviewEditingManager;
$editor = app(ReviewEditingManager::class);
$review = $review->fresh();
$version = $review->proEditState?->version ?? 0;
$fingerprint = $editor->fingerprint($review);
$saved = $editor->saveReview($review, [
'reviewText' => 'My updated experience after a month.',
'ratings' => ['overall' => 4, 'quality' => 4, 'price' => 5],
'recommend' => true,
], $version, $fingerprint);
Omitted title/photo fields preserve existing values. A supplied imageOrder must contain unique IDs from this review; omitted images are removed after a successful save. Refresh the snapshot before a subsequent operation. Use Laravel's transaction APIs so new-upload rollback and old-file after-commit cleanup can run correctly.