1

In Magento 2, I try to add an observer sales_order_place_after and it doesn't work.

app/code/Vendor/Module/etc/event.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_order_place_after">
        <observer name="vendor_module_order_place_after" instance="Vendor\Module\Observer\OrderPlaceAfter" />
    </event>
</config>

app/code/Vendor/Module/Observer/OrderPlaceAfter.php

<?php

namespace Vendor\Module\Observer;

class OrderPlaceAfter implements \Magento\Framework\Event\ObserverInterface
{
    protected $_logger;
    protected $_myObserverFactory;

    /**
    * @param \Psr\Log\LoggerInterface $_logger
    */

    public function __construct(
        \Vendor\Module\Logger\Logger $logger,
        \Vendor\Module\Model\MyObserverFactory $myObserverFactory
    ) {
        $this->_logger = $logger;
        $this->_myObserverFactory = $myObserverFactory;
        $this->_logger->info('test');
    }

    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $this->_logger->info('START - Observer Order');
        $order = $observer->getEvent()->getOrder();

        $this->_logger->info($order->getData());
        $this->_logger->debug($order->getData());

        var_dump($order->getData());die;
        $this->_logger->info('END - Observer Order');
    }
}

After placing an order no logs are saved and var_dump; die; do not show.

Can you help me please ?

5
  • Clear cache and then check it. Jan 21, 2020 at 10:31
  • @Black Not require. Jan 21, 2020 at 10:37
  • @DhadukMitesh I run every command, cache:clean / flush / upgrade / deploy but it's not better...
    – Fbr
    Jan 21, 2020 at 10:44
  • See my answer... Jan 21, 2020 at 10:52
  • @Fabien, did you try my answer?
    – Black
    Jan 21, 2020 at 10:56

2 Answers 2

2

Change your event file name with events.xml

app/code/Vendor/Module/etc/events.xml

Clear cache and check it.

1
  • Thank you that was the problem!
    – Fbr
    Jan 21, 2020 at 11:07
0

You have to declare your observer in the appropriate scope. Also make sure that it is named events.xml.

Frontend:

Put your events.xml to <module-dir>/etc/frontend/events.xml since this is a frontend event.

Backend:

For backend events put it in <module-dir>/etc/adminhtml/events.xml

Documentation

1
  • 1
    Thanks but that didn't solve the problem
    – Fbr
    Jan 21, 2020 at 11:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.