This article will talk about Event in Magento 2. As you know, Magento 2 is using the event driven architecture which will help too much to extend the Magento functionality. We can understand this event as a kind of flag that rises when a specific situation happens. We will use an example module Mageplaza_Example to exercise this lesson. Dispatch event In Magento 2 Events, we can use the class Magento\Framework\Event\Manager to dispatch event. For example, we create a controller action in Mageplaza_Example to show the word “Hello World” on the screen: File: app/code/Mageplaza/Example/Controller/Hello/World.php <?php namespace Mageplaza\Example\Controller\Hello; class World extends \Magento\Framework\App\Action\Action { public function execute() { echo 'Hello World'; exit; } } 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/Example/Controller/Hello/World.php <?php namespace Mageplaza\Example\Controller\Hello; class World extends \Magento\Framework\App\Action\Action { public function execute() { $textDisplay = new \Magento\Framework\DataObject(array('text' => 'Mageplaza')); $this->_eventManager->dispatch('example_hello_world_display_text', ['text' => $textDisplay]); echo $textDisplay->getText(); exit; } } The dispatch method will receive 2 arguments: an unique event name and an array data. In this example, we add the data object to the event and call it back to display the text. Catch and handle event Event area 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/Example/etc/adminhtml/events.xml Frontend area: app/code/Mageplaza/Example/etc/frontend/events.xml Global area: app/code/Mageplaza/Example/etc/events.xml Create events.xml In this example, 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. File: app/code/Mageplaza/Example/etc/frontend/events.xml <?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="example_hello_world_display_text"> <observer name="hello_world_display" instance="Mageplaza\Example\Observer\ChangeDisplayText" /> </event> </config> 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\Example\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. Observer Now we will create a class to execute above event. File: app/code/Mageplaza/Example/Observer/ChangeDisplayText.php <?php namespace Mageplaza\Example\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. Mageplaza.com is developing best class Magento Extensions base on an great team. Magento 2 Product Feed | Magento 2 Order Manager | Magento 2 Vtiger | Magento 2 SugarCRM | Magento 2 Odoo | Magento 2 One Step Checkout | Magento 2 Affiliate | Magento 2 Seo | Magento 2 Blog developed Mageplaza.com Manual magento 2 : Magento 2 Tutorial Magento 2 Shop by Brand Magento 2 Events Magento 2 CRUD Magento 2 System Configuration Magento 2 Add Command Line Setup Script in Magento 2 Magento 2 Admin ACL Magento 2 Indexing an bình city