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?

Was it helpful?

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));
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top