Magento 2.0.2 – Frontend Event sales_order_place_after Not Working

event-observermagento-2.0.2magento2sales-order

I am catching sales_order_place_after event in etc/adminhtml/events.xml everything working fine..

But same is not working while trying to catch in etc/frontend/events.xml.
also tried to catch the event in etc/events.xml but no luck..

In brief my problem is:

sales_order_place_after event is working while placing the order from admin Dashboard but same is not working if order placed from frontend.

is there any different way to call this event from front end ??

adminhtml/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_order_place_after">
        <observer name="sales_order_grid_vendors" instance="Company\Vendors\Observer\Adminhtml\Vendor\AddVendorSalesOrders" />
    </event>
</config>

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_order_place_after">
        <observer name="sales_order_grid_vendors_customer" instance="Company\Vendors\Observer\AddVendorOrders" />
    </event>
</config>

observers:
Observer/Adminhtml/Vendor/AddVendorSalesOrders.php

namespace Company\Vendors\Observer\Adminhtml\Vendor;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class AddVendorSalesOrders implements ObserverInterface
{
  public function execute(Observer $observer)
      {
        die('mujassam');
      }
}

Observer/AddVendorOrders.php

namespace Company\Vendors\Observer;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class AddVendorOrders implements ObserverInterface
{
  public function execute(Observer $observer)
      {
        die('mujassam');
      }
}

Best Answer

In case you do not want to listen to the sales_order_place_after event globally, the correct scope would be webapi_rest instead of frontend.