Magento 2 Events and Observers let you hook into Magento’s execution flow without modifying core code. This allows developers to perform actions when specific events happen, making the system highly extensible.
—
🔄 What are Events and Observers?
- Events: Actions that happen during Magento’s execution (e.g., customer login).
- Observers: Classes that listen to events and respond with custom logic.
—
📍 Common Use Cases
- Send an email after order placement
- Log data on customer login
- Modify product data before save
—
🔧 Create a Custom Observer
Step 1: Declare Events in events.xml
—
Step 2: Create the Observer Class
<?php namespace Vendor\Module\Observer; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; class CustomerLoginObserver implements ObserverInterface { public function execute(Observer $observer) { $customer = $observer->getEvent()->getCustomer(); // Custom logic here // Example: Log customer email $writer = new \Zend_Log_Writer_Stream(BP . '/var/log/customer_login.log'); $logger = new \Zend_Log(); $logger->addWriter($writer); $logger->info('Customer Logged In: ' . $customer->getEmail()); } }
—
Step 3: Enable & Test
- Run:
php bin/magento setup:upgrade
- Run:
php bin/magento cache:flush
- Log in as a customer and check
var/log/customer_login.log
—
🧩 Popular Magento Events
Event | Description |
---|---|
customer_login |
Customer successfully logs in |
sales_order_place_after |
After order is placed |
catalog_product_save_before |
Before product is saved |
—
✅ Best Practices
- Use observers only when no plugin or DI method fits
- Use unique observer names
- Keep observer logic simple and efficient
—
🧠 Summary
- Events let you hook into Magento without overriding
- Observers respond to specific events with custom logic
- Easy to extend Magento functionality safely