In Magento 1.x
I have created following function in Namespace/Modulename/Model/Observer.php
public function salesQuoteItemSetCustomAttribute($observer){
$quoteItem = $observer->getQuoteItem();
$product = $observer->getProduct();
$quoteItem->setCustomerProductPoints($product->getCustomerProductPoints());
}
Called this function in Namespace/Modulename/etc/config.xml
<sales_quote_item_set_product>
<observers>
<product_point_quote>
<class>productpoint/observer</class>
<method>salesQuoteItemSetCustomAttribute</method>
</product_point_quote>
</observers>
</sales_quote_item_set_product>
Also Have converted my custom attribute quote to order and from order to quote by using following code in config.xml
<sales_convert_quote_item>
<customer_product_points>
<to_order_item>*</to_order_item>
<to_invoice_item>*</to_invoice_item>
<to_shipment_item>*</to_shipment_item>
<to_cm_item>*</to_cm_item>
</customer_product_points>
</sales_convert_quote_item>
<sales_convert_order_item>
<customer_product_points>
<to_quote_item>*</to_quote_item>
<to_invoice_item>*</to_invoice_item>
<to_shipment_item>*</to_shipment_item>
<to_cm_item>*</to_cm_item>
</customer_product_points>
</sales_convert_order_item>
In Magento 2
I tried doing the same thing in Magento 2 but not able to get details of product.
I tried with following code:
Namespace/Modulename/Observer/salesQuoteItemSetCustomAttribute.php
<?php
namespace Namespace\Modulename\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Catalog\Model\Product;
use Magento\Checkout\Model\Cart;
class salesQuoteItemSetCustomAttribute implements ObserverInterface
{
public function __construct(
\Magento\Checkout\Model\Cart $cart,
\Magento\Catalog\Model\Product $product
) {
$this->cart = $cart;
$this->product = $product;
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
$cartQuote= $this->cart->getItems()->getData();
$prod= $this->product->getData();
echo '<pre>';print_r($prod); exit;
}
}
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="sales_quote_save_after">
<observer name="set_checkout_quote_id" instance="Magento\Checkout\Observer\SalesQuoteSaveAfterObserver" />
</event>
</config>
etc/fieldset.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../../../../../lib/internal/Magento/Framework/Object/etc/fieldset.xsd">
<scope id="global">
<fieldset id="sales_convert_quote_item">
<field name="product_point">
<aspect name="to_order_item" />
<aspect name="to_invoice_item" />
<aspect name="to_shipment_item" />
<aspect name="to_cm_item" />
</field>
</fieldset>
<fieldset id="sales_convert_order_item">
<field name="product_point">
<aspect name="to_quote_item" />
<aspect name="to_invoice_item" />
<aspect name="to_shipment_item" />
<aspect name="to_cm_item" />
</field>
</fieldset>
</scope>
</config>
Using the above code I am getting values of attributes in cart but not getting my custom attribute value. When I try to print Product Data it returns null.
The code works well with Magento 1.9. How do I make it work with Magento 2.0.2?
How to set custom attribute
and display it cart page in Magento 2?