Magento 2 Create Events

In this example we will should you How to create a event in Magento 2, we only catch the event to show the word Mageplaza on the frontend so we should create an events.xml file in etc/frontend folder.

Overview of creating events in Magento 2

  • Step 1: Create a event file: event.xml
  • Step 2: Create Observer class
  • Step 3: Dispatch event and test

Understand Catching and handling a event

Magento use area definition to manage the store. We will have a frontend area and admin area. With the configuration file, they can be put in 3 places:

  • Under etc/ folder is the configuration which can be used in both admin and frontend.
  • Under etc/frontend folder will be used for frontend area.
  • Under etc/adminhtml folder will be used for admin area.

The same with the event configuration file. You can create events configuration file for each area like this:

  • Admin area: app/code/Mageplaza/HelloWorld/etc/adminhtml/events.xml
  • Frontend area: app/code/Mageplaza/HelloWorld/etc/frontend/events.xml
  • Global area: app/code/Mageplaza/HelloWorld/etc/events.xml

Step 1: Create a event file: event.xml

File: app/code/Mageplaza/HelloWorld/etc/frontend/events.xml

<?xml version="1.0"?>
<config xmlns:xsi="" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
  <!-- you can change this event name -->
  <event name="mageplaza_helloworld_display_text"> 
     <observer name="hello_world_display" instance="Mageplaza\HelloWorld\Observer\ChangeDisplayText" />

In this file, under config element, we define an event element with the name is the event name which was dispatch above. The class which will execute this event will be define in the observer element by instance attribute. The name of observer is used to identify this with other observers of this event.

With this events.xml file, Magento will execute class Mageplaza\HelloWorld\Observer\ChangeDisplayText whenever the dispatch method of this event was called on frontend area. Please note that, we place events.xml in the frontend area, so if you dispatch that event in the admin area (like admin controller), it will not run.

Step 2: Create Observer class

Now we will create a class to execute above event.

File: app/code/Mageplaza/Example/Observer/ChangeDisplayText.php

namespace Mageplaza\HelloWorld\Observer;

class ChangeDisplayText implements \Magento\Framework\Event\ObserverInterface
  public function execute(\Magento\Framework\Event\Observer $observer)
     $displayText = $observer->getData('text');
     $displayText->setText('Execute event successfully.');

     return $this;

This class will implement the ObserverInterface and declare the execute method. You can see this simple method to know how it work.

Let’s flush cache and see the result.

Step 3: Dispatch event and test

Now we want to dispatch an magento 2 event list which allow other module can change the word displayed. We will change the controller like this:

File: app/code/Mageplaza/HelloWorld/Controller/Hello/World.php

namespace Mageplaza\HelloWorld\Controller\Hello;

class World extends \Magento\Framework\App\Action\Action
  public function execute()
     $textDisplay = new \Magento\Framework\DataObject(array('text' => 'Mageplaza'));
     $this->_eventManager->dispatch('mageplaza_helloworld_display_text', ['text' => $textDisplay]);
     echo $textDisplay->getText();

Enjoyed the tutorial? Spread it to your friends!


Comments for Magento 2 Create Events

Please leave comments if you have any questions, feedbacks.

Module Development

You also may like these Magento 2 Extensions

One Step Checkout

10 reviews

Layered Navigation

12 reviews


no review

People also searched for:

  • magento 2 create event
  • create event in magento 2
  • how to create event in magento 2