How to get customer information in magento 2
-
13-12-2019 - |
Question
In my custom module I'm trying to get the Customer, Customer Address, Product
and Order
information through events/observers
but it's not working. When I'm hit the Save Button the website is hanging.
my code is:
Learning/Custom/etc/frontend/events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
<event name="customer_save_after">
<observer name="custom_event" instance="Learning\Custom\Model\Observer" method="getCustomer" />
</event>
<event name="customer_address_save_commit_after">
<observer name="custom_event" instance="Learning\Custom\Model\Observer" method="getCustomerAddress" />
</event>
<event name="sales_order_save_after">
<observer name="custom_event" instance="Learning\Custom\Model\Observer" method="getOrder" />
</event>
</config>
Learning/Custom/etc/adminhtml/events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
<event name="catalog_product_save_commit_after">
<observer name="custom_event" instance="Learning\Custom\Model\Observer" method="getProduct" />
</event>
</config>
Learning\Custom\Model\Observer.php
<?php
namespace Learning\Custom\Model;
class Observer{
/**
* Get the Customer Information
*
* @param \Magento\Framework\Event\Observer $observer
*/
public function getCustomer(\Magento\Framework\Event\Observer $observer)
{
/* $customer = $observer->getCustomer();*/
$event = $observer->getEvent();
$customer = $event->getCustomer();
file_put_contents('customer.txt',print_r($customer,true));
}
/**
* Get the Customer Address Information
*
* @param \Magento\Framework\Event\Observer $observer
*/
public function getCustomerAddress(\Magento\Framework\Event\Observer $observer)
{
/*$customerAddress = $observer->getCustomerAddress();
$customer = $customerAddress->getCustomer();*/
$event = $observer->getEvent();
$customerAddress = $event->getCustomerAddress();
$customer = $customerAddress->getCustomer();
file_put_contents('customerAddress.txt',print_r($customerAddress,true));
file_put_contents('customer.txt',print_r($customer,true));
}
/**
* Get the Order Information
*
* @param \Magento\Framework\Event\Observer $observer
*/
public function getOrder(\Magento\Framework\Event\Observer $observer)
{
/* $order = $observer->getOrder();*/
$event = $observer->getEvent();
$order = $event->getOrder();
file_put_contents('order.txt',print_r($order,true));
}
/**
* Get the Product Information
*
* @param \Magento\Framework\Event\Observer $observer
*/
public function getProduct(\Magento\Framework\Event\Observer $observer)
{
/* $product_id = $observer->getProduct()->getId();*/
$event = $observer->getEvent();
$Product = $event->getProduct();
file_put_contents('Product.txt',print_r($Product,true));
}
}
Any suggestions?
Solution
you have tried to put object to file
and that is really bad idea .that reason the issues are creating..
Whenever,you have tried to print an object to file and it was access take lot ram that machine is hanged up.
My suggest to get data from object and put this value to an array the print that array on text file
Suppose for sales_order_save_after
If want to get data then use getData() for getting in array format.
$event = $observer->getEvent(); $order = $event->getOrder(); //Zend_Debug::dump($order->getData(), $label = null, $echo = true); file_put_contents('order.txt',\Zend_Debug::dump($order->getData(), $label = null, $echo = true));