How to Use Event in Magento 2
In this article, I will show you how to use event in Magento 2. Please follow below three steps to use magento event.
- Step 1: Dispatch event
- Step 2: Create events.xml file to catch the event
- Step 3: Create Observer file to catch event
As Magento 2 provides an event system. It helps developer to modify or add information to a module without changing the core source code.
Step 1: Dispatch event
In Magento 2, you can dispatch the event from any place: controller, model, block, data. We will create an event from controller file.
File directory: app/code/Namespace/Modulename/Controller/Index/Index.php
saveCopyzoom_out_map<?php namespace Namespace/Modulename\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action
{
public function execute() {
$hello = new \Magento\Framework\DataObject(array('label' => 'Magento 2 Event Call'));
$this->_eventManager->dispatch('hello_magento_display', ['display' => $hello]);
echo $hello->getDisplay();
exit;
}
}
- 'hello_magento_display': event name
- ['display' => $hello]: event argument
- Open your browser and use link: http://yoursite.com/modulecontroller
- Result: Magento 2 Event Call
Step 2: Create events.xml file to catch event
File directory: app/code/Namespace/Modulename/etc/events/xml
saveCopyzoom_out_map<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="hello_magento_display">
<observer name="change_hello_magento_display" instance="Namespace/Modulename/Observer/Change" />
</event>
</config>
Note: Magento provides 3 events area: admin, frontend and global. In this example we can use frontend area or global area.
- Admin area: app/code/Namespace/Modulename/etc/adminhtml/events.xml
- Frontend area: app/code/Namespace/Modulename/etc/frontend/events.xml
- Global area: app/code/Namespace/Modulename/etc/events.xml
Step 3: Create Observer file to catch event
File: app/code/Namespace/Modulename/Observer/Change.php
saveCopyzoom_out_map<?php namespace Namespace/Modulename\Observer;
class Change implements \Magento\Framework\Event\ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer) {
$displayText = $observer->getData('display');
$displayText->setDisplay('Get magento 2 event successfully!!!');
return $this;
}
}
Use the link again on your browser: http://yoursite.com/modulecontroller
That's it!!
Finally, we are done, let's flush or refresh cache and check Result was changed or not.
I hope this Magento article helped you to find what you were looking for.
Bookmark it for your future reference. Do comment below if you have any other handy commands which are not included in the list.
P.S. Do share this note with your team.
AI-Powered Recommended Articles
How to create JSON controller in Magento 2
Learn how to create a JSON controller in Magento for handling AJAX requests and returning JSON data.
How to Create a Custom Console Command in Magento 2
Learn how to create custom console commands in Magento 2 to extend the command line interface for your specific needs.
How to Get Current Category in Magento 2
Learn how to retrieve the current category in Magento 2 using code to display relevant category data in your store.
How to Get Order Details by Order Id in Magento 2
Learn how to retrieve detailed order information using the order ID in Magento 2 to manage customer orders efficiently.
How to set customer data in httpContext and retrieve it in Magento 2.
Learn how to set and retrieve customer data using HttpContext in Magento 2 for personalized customer experiences.
How To Create a Magento 2 Module
Follow this guide to create a custom Magento 2 module from scratch for extended functionality.