Magento 2 – How to Use sales_quote_save_after Event

event-observermagento2

I would like to call an observer called 'salesQuoteSaveAfter' in magento 2 but it is not working could you please guide me or suggest me whether i did mistake.

File Paths:

1) app/code/Ewall/CustomPrice/Observer/SalesQuoteSaveAfterCustom.php

namespace Ewall\CustomPrice\Observer;

use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\RequestInterface;

class SalesQuoteSaveAfterCustom
{   
    protected $checkoutSession;

        public function __construct(\Magento\Checkout\Model\Session $checkoutSession)
        {
        $this->checkoutSession = $checkoutSession;
        }
    public function invoke($observer)
    {
        $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/test.log');
        $logger = new \Zend\Log\Logger();
        $logger->addWriter($writer);
        $logger->info('invoke function is calling');

        $quote = $observer->getEvent()->getQuote();

        /* @var $quote \Magento\Quote\Model\Quote */

        if($quote->getIsCheckoutCart())
        {
        $this->checkoutSession->getQuoteId($quote->getId());
        } 
     }
}

2 ) app/code/Ewall/CustomPrice/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="sales_quote_save_after">
<observer name="Ewall_CustomPrice_Custom" instance="Ewall\CustomPrice\Observer\SalesQuoteSaveAfterCustom" />
</event>

could you please help me. thanks

Best Answer

Try following way:

namespace Ewall\CustomPrice\Observer;

use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\RequestInterface;

class SalesQuoteSaveAfterCustom implements ObserverInterface
{
    protected $checkoutSession;

    public function __construct(\Magento\Checkout\Model\Session $checkoutSession)
    {
        $this->checkoutSession = $checkoutSession;
    }
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/test.log');
        $logger = new \Zend\Log\Logger();
        $logger->addWriter($writer);
        $logger->info('invoke function is calling');

        $quote = $observer->getQuote();

        /* @var $quote \Magento\Quote\Model\Quote */

        if($quote->getIsCheckoutCart())
        {
            $this->checkoutSession->getQuoteId($quote->getId());
        }
    }
}