Reputation: 8714
I have added this observer to my module and I put event definition in events.xml
# app/code/Vendor/ModuleName/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="checkout_submit_before">
<observer name="vendor_modulename_order_save_before" instance="Vendor\ModuleName\Observer\OrderObserver" />
</event>
</config>
I have added some logic in my observer
# app/code/Vendor/Name/Observer/OrderObserver.php
namespace Vendor\ModuleName\Observer;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class OrderObserver implements ObserverInterface
{
public function __construct()
{
}
/**
* @param Observer $observer
* @return void
*/
public function execute(\Magento\Framework\Event\Observer $observer)
{
$quote = $observer->getQuote();
...
...
...
}
}
Upvotes: 2
Views: 2802
Reputation: 3591
try placing your events.xml as etc/events.xml
# app/code/Vendor/ModuleName/etc/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="checkout_submit_before">
<observer name="vendor_modulename_order_save_before" instance="Vendor\ModuleName\Observer\OrderObserver" />
</event>
</config>
and no need to use Magento\Framework\Event\Observer
# app/code/Vendor/ModuleName/Observer/OrderObserver.php
namespace Vendor\ModuleName\Observer;
use Magento\Framework\Event\ObserverInterface;
class OrderObserver implements ObserverInterface
{
/**
* @param Observer $observer
* @return void
*/
public function execute(\Magento\Framework\Event\Observer $observer)
{
$quote = $observer->getQuote();
...
...
...
}
}
make sure to clean cache
bin/magento cache:clean
let me know if you are still having issues
Upvotes: 2