Difference Between Model Events vs Global Events in Magento 2
Sub Title: Understand how Magento 2 events work: Model-based lifecycle events vs system-wide global events with real examples.
Introduction
Magento 2 follows an event-driven architecture, allowing developers to hook into system processes without modifying core code. Two important types of events in Magento 2 are Model Events and Global Events.
In this guide, we will explore the difference between them, how they work, and when to use each in real-world scenarios.
What are Model Events in Magento 2?
Model events are automatically triggered during the lifecycle of a Magento model, such as when a model is saved or deleted.
Example: Defining Event Prefix
protected $_eventPrefix = 'vendor';
protected $_eventObject = 'vendor';
When you save this model:
$vendor->save();
Magento automatically dispatches:
- vendor_save_before
- vendor_save_after
Observer Example
<event name="vendor_save_after">
<observer name="vendor_save_observer"
instance="MyCompany\MyModule\Observer\VendorSaveObserver" />
</event>
Access model data in observer:
$vendor = $observer->getEvent()->getVendor();
Key Features
- Automatically triggered
- Tied to specific model
- Based on CRUD operations
- Uses $_eventPrefix
What are Global Events in Magento 2?
Global events are system-wide events that are either dispatched by Magento core or manually triggered by developers.
Core Event Example
<event name="checkout_submit_all_after">
<observer name="order_observer"
instance="MyCompany\MyModule\Observer\OrderObserver" />
</event>
Custom Event Dispatch
$this->_eventManager->dispatch(
'my_custom_event',
['data' => $value]
);
Observer Example
$data = $observer->getEvent()->getData('data');
Key Features
- Manually or system triggered
- Not tied to a specific model
- Flexible naming
- Used for workflows and integrations
Key Differences Between Model Events and Global Events
| Feature | Model Events | Global Events |
|---|---|---|
| Trigger | Automatic | Manual / Core |
| Scope | Specific model | System-wide |
| Dependency | $_eventPrefix | None |
| Use Case | CRUD lifecycle | Business logic |
| Example | vendor_save_after | checkout_submit_all_after |
When to Use Model Events?
- When working with custom entities
- When reacting to save/delete operations
- When extending model lifecycle
When to Use Global Events?
- When handling system-wide processes
- For integrations (ERP, CRM, APIs)
- For custom workflows
Real-World Examples
Model Event Use Case
Generate vendor code after saving vendor:
vendor_save_after
Global Event Use Case
Send order data to ERP after order placement:
checkout_submit_all_after
Conclusion
Understanding the difference between Model Events and Global Events is crucial for Magento 2 development. Model events are ideal for handling entity lifecycle changes, while global events provide flexibility for handling broader application logic.
Choosing the right event type ensures better performance, scalability, and maintainability in your Magento projects.