Magento2: how to debug in sales_order_place_after event
-
25-02-2021 - |
Domanda
registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Hafiz_Sms',
__DIR__
);
etc/events.xml
<?xml version="1.0"?>
<configxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<eventname="sales_order_place_after">
<observername="place_order_after" instance="Hafiz\Sms\Observer\Orderplaceafter" />
</event>
</config>
etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Hafiz_Sms" setup_version="2.1.1"></module>
</config>
Observer/Orderplaceafter.php
<?php
namespace Hafiz\Sms\Observer;
use Magento\Framework\Event\ObserverInterface;
use Psr\Log\LoggerInterface;
class Orderplaceafter implements ObserverInterface
{
protected $logger;
public function __construct(LoggerInterface$logger) {
$this->logger = $logger;
}
public function execute(\Magento\Framework\Event\Observer $observer){
$order = $observer->getEvent()->getOrder();
echo $orderId = $order->getId();
// $comment = $this->getRequest()->getParam('comment');
print_r("Catched event succssfully !"); exit;
}
}
But it's not working. How to debug in this event?. Kindly suggest me where i am wrong?
Soluzione
The event will be defined at etc/events.xml
Nor etc/event.xml
.Seems file name is wrong.
events.xml
code will be like.Also, the Syntax of declare event is wrong. Please used below code:
<?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="place_order_after" instance="Hafiz\Sms\Observer\Orderplaceafter" />
</event>
</config>
Follow this article for how to implement event at module https://devdocs.magento.com/guides/v2.2/extension-dev-guide/events-and-observers.html.
Forgetting purpose, don't use print_r, die and exit. Use Magento loggger for print for debugging Magento 2: Replacement for Mage::log method?
Altri suggerimenti
Yes, it is an interesting question. Many people may know about sales_order_place_after
event.
If you use this event, you can't use print_r() and exit() function.
Otherwise, kindly use checkout_onepage_controller_success_action
event. It will a helpful lot
You declared event name
and observer name
as observername
and eventname
.
<?xml version="1.0"?>
<configxmlns: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="place_order_after" instance="Hafiz\Sms\Observer\Orderplaceafter" />
</event>
</config>