Reference
Observers
Observers let you group model lifecycle hooks in one class. They are useful when a model needs side effects around create, update, or delete operations.
Quick Example
// app/Observers/PostObserver.js
export default class PostObserver {
async creating(post) {
if (!post.slug && post.title) {
post.slug = post.title.toLowerCase().replaceAll(" ", "-");
}
}
async deleted(post) {
console.log(`Post ${post.id} deleted`);
}
}
Register it:
// app/Providers/EventServiceProvider.js
static get observers() {
return {
Post: [PostObserver],
};
}
Explanation
The netpress package provides the observer registry. Model wrappers call notify(modelName, event, payload) around lifecycle operations, and registered observers receive those hooks in order.
The common hook names are:
creatingandcreatedupdatingandupdateddeletinganddeleted
Additional Examples
Create a new observer:
npm run artisan -- make:observer PostObserver --model=Post
Cancel an action from a *ing hook:
async deleting(post) {
if (post.isLocked) {
return false;
}
}
Advanced Usage
Use observers for model lifecycle rules, not for every business action. If the behavior depends on several services or external APIs, a domain service or event listener is usually a better fit.
Notes / Tips
- Keep observers small and model-focused.
- Return
falsefrom an*inghook when you need to stop the operation. - Register observers in
EventServiceProviderso the boot path stays obvious.