-
Notifications
You must be signed in to change notification settings - Fork 0
Events
Phillip Dornauer edited this page Apr 19, 2026
·
1 revision
Marble fires standard Laravel events at key lifecycle points. Listen to them in any ServiceProvider or EventServiceProvider to extend behaviour without modifying core.
use Illuminate\Support\Facades\Event;
// or in EventServiceProvider $listen arrayFired after an item's field values are saved via the admin panel.
use Marble\Admin\Events\ItemSaved;
Event::listen(ItemSaved::class, function (ItemSaved $e) {
$e->item; // Marble\Admin\Models\Item
$e->changedFields; // ['slug.en' => ['old' => '...', 'new' => '...'], ...]
$e->userId; // int|null — admin user who saved
});$changedFields is a flat array keyed by field_name.locale (or just field_name for non-translatable fields). Each entry has old and new keys.
Fired when an item's status is set to published (via the toggle or workflow advance).
use Marble\Admin\Events\ItemPublished;
Event::listen(ItemPublished::class, function (ItemPublished $e) {
$e->item; // Item
$e->userId; // int|null
});Fired after an item is soft-deleted (moved to trash).
use Marble\Admin\Events\ItemTrashed;
Event::listen(ItemTrashed::class, function (ItemTrashed $e) {
$e->item; // Item (soft-deleted, still accessible)
$e->userId; // int|null
});Fired when a contact form is submitted via <x-marble::marble-form>.
use Marble\Admin\Events\MarbleFormSubmitted;
Event::listen(MarbleFormSubmitted::class, function (MarbleFormSubmitted $e) {
$e->submission; // FormSubmission model
});Fired after a portal user successfully registers at /portal/register.
use Marble\Admin\Events\PortalUserRegistered;
Event::listen(PortalUserRegistered::class, function (PortalUserRegistered $e) {
$e->user; // Marble\Admin\Models\PortalUser
});Fired after a portal user successfully logs in at /portal/login.
use Marble\Admin\Events\PortalUserLoggedIn;
Event::listen(PortalUserLoggedIn::class, function (PortalUserLoggedIn $e) {
$e->user; // Marble\Admin\Models\PortalUser
});// In AppServiceProvider::boot()
use Marble\Admin\Events\ItemPublished;
Event::listen(ItemPublished::class, function (ItemPublished $e) {
if ($e->item->blueprint->identifier === 'blog_post') {
dispatch(new SyncPostToSearchIndex($e->item->id));
}
});use Marble\Admin\Events\PortalUserRegistered;
use App\Mail\WelcomeMail;
Event::listen(PortalUserRegistered::class, function (PortalUserRegistered $e) {
Mail::to($e->user->email)->send(new WelcomeMail($e->user));
});