Trong Magento 1.x
Tôi đã tạo chức năng sau trong Namespace/Modulename/Model/Observer.php
public function salesQuoteItemSetCustomAttribute($observer){
$quoteItem = $observer->getQuoteItem();
$product = $observer->getProduct();
$quoteItem->setCustomerProductPoints($product->getCustomerProductPoints());
}
Được gọi là chức năng này trong 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>
Cũng đã chuyển đổi trích dẫn thuộc tính tùy chỉnh của tôi để đặt hàng và từ thứ tự sang trích dẫn bằng cách sử dụng mã sau trongconfig.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>
Trong Magento 2
Tôi đã thử làm điều tương tự trong Magento 2 nhưng không thể có được thông tin chi tiết về sản phẩm.
Tôi đã thử với mã sau đây:
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>
Sử dụng đoạn mã trên tôi nhận được các giá trị của các thuộc tính trong giỏ hàng nhưng không nhận được giá trị thuộc tính tùy chỉnh của mình. Khi tôi cố gắng in Dữ liệu sản phẩm, nó sẽ trả về null.
Mã này hoạt động tốt với Magento 1.9. Làm cách nào để tôi làm cho nó hoạt động với Magento 2.0.2?
Làm cách nào để thiết lập custom attribute
và hiển thị trang giỏ hàng trong Magento 2?