Magento 2 – Get Order Event After Placing Order Using Observer

event-observermagento2orders

i want to get the order event and want to use the order object data , tried this but something is missing, here is what i tried
and how can i use this data in my helper/block class or controller action?

etc/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="test_order">
        <observer name="afterOrderObserver" instance="Vendor\Module\Observer\Order"/>
    </event>
</config>

Observer/TestOrder.php

<?php

namespace Vendor\Module\Model\Observer;

use Magento\Framework\Event\ObserverInterface;

class TestOrder implements ObserverInterface
{
    /**
     * Order Model
     *
     * @var \Magento\Sales\Model\Order $order
     */
    protected $order;

     public function __construct(
        \Magento\Sales\Model\Order $order
    )
    {
        $this->order = $order;
    }

    public function execute(\Magento\Framework\Event\Observer $observer)
    {
       $orderId = $observer->getEvent()->getOrderIds();
        $order = $this->order->load($orderId);

        //get Order All Item
        $itemCollection = $order->getItemsCollection();
        $customer = $order->getCustomerId(); // using this id you can get customer name

    }
}

Best Answer

Please modify your code like below

    <?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="order_data" instance="Vendor\Module\Observer\OrderData" />
   </event>
</config>

OrderData.php

class OrderData implements \Magento\Framework\Event\ObserverInterface
{
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
     $order = $observer->getEvent()->getOrder();
     echo $order->getId();
     exit;
    }
}

make sure you place events.xml under etc/adminhtml let me know if any help needed.