In Magento 2 I'm trying to create an observer.
The objective is to call the method "eventLogging" when click "place order". To test the method, I send a basic message ("Hello") to a log file.
But nothing seems to happen when I "place order". What am I doing wrong?
/var/www/magento2/app/code/Myapp/Order/etc/frontend/events.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Ev ent/etc/events.xsd"> <event name="checkout_submit_before"> <observer name="myapp_controller_success_action" instance="Myapp\Order\Observer\MyappObserver" /> </event> </config>
/var/www/magento2/app/code/Myapp/Order/Observer
<?php namespace Myapp\Order\Observer; use \Magento\Framework\Event\Observer; use \Magento\Framework\Event\ObserverInterface; class MyappObserver implements ObserverInterface { public function __construct( \Psr\Log\LoggerInterface $logger ) { $this->logger = $logger; } public function eventLogging(\Magento\Framework\Object $observer) { $event = $observer->getEvent(); $quote = $event->getQuote(); $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/developer.log'); $logger = new \Zend\Log\Logger(); $logger->addWriter($writer); $logger->info($quote->getData(),true); } public function execute(Observer $observer) { // $event = $observer->getEvent(); // $quote = $event->getQuote(); $myfile = fopen("var/log/debug.log", "a+") or die("Unable to open file!"); fwrite($myfile, "hello");
fwrite($myfile, print_r($quote->getData(),true)); fclose($myfile); //$event = $observer->getEvent(); // $quote = $event->getQuote(); // Mage::log(print_r(Zend_Debug::dump($quote->getData()), true),NULL, 'developer.log'); exit; } /public function execute(\Magento\Framework\Event\Observer $observer) { rm_state()->controllerSet($observer['controller_action']); }/ }
Hello James
Place your event.xml in side the etc folder and outside the frontend.
i.e /var/www/magento2/app/code/Myapp/Order/etc/events.xml and event is "sales_order_place_after"
<config xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="sales_order_place_after">
<observer name="coupan_applied" instance="Ipragmatech\Pricenegotiator\Observer\ApplycouponObserver"/>
</event>
</config>
and inside your execute method use following code to just print log
create "mylog.log" inside var/log/
$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/mylog.log'); $logger = new \Zend\Log\Logger(); $logger->addWriter($writer); $logger->info("Messsage"));