Quantcast
Channel: Webkul Blog
Viewing all articles
Browse latest Browse all 5556

How to create custom observers in magento2

$
0
0

In this blog We are going to explain you how to create your own custom event (observer) in magento2. For this firstly we declare a event whenever we want like I am going to declare this observer in controller execute method-

Step 1- Declaration of observer

public function execute()
    {
        try{
            if($this->getRequest()->isPost()){
                if (!$this->_formKeyValidator->validate($this->getRequest())) {
                    return $this->resultRedirectFactory->create()->setPath('*/*/');
                }
                ..

                /* Here want to create to execute some code whenever this controller will be executed - So we create custom event here */

                $this->_eventManager->dispatch(
                    'custom_observer_name',
                    [$this->getRequest()->getParams()]
                );

                ..
            }            
        }catch (\Magento\Framework\Exception\LocalizedException $e) {
            $this->messageManager->addError($e->getMessage());
            return $this->resultRedirectFactory->create()->setPath('*/*/');
        }  catch (Exception $e) {
            $this->messageManager->addError($e->getMessage());
            return $this->resultRedirectFactory->create()->setPath('*/*/');
        }
    }

Step 2- Calling the custom observer

<?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="custom_observer_name">
        <observer name="custom_observer_method" instance="Webkul\Grid\Observer\CustomObserverMethod"/>
    </event>
</config>

Step 3- creating custom observer method

namespace Webkul\Grid\Observer;

use Magento\Framework\Event\ObserverInterface;

class CustomObserverMethod implements ObserverInterface
{
    /**
     * custom event handler
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return void
     */
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        try{
            $eventData = $observer->getData();
            // Write your code here
        }catch(Exception $e){
            $this->messageManager->addError($e->getMessage());
        }
    }
}

So in this way you can create and call your own custom event easily.


Viewing all articles
Browse latest Browse all 5556

Trending Articles