Magento 1.xの場合
私は次の関数を作成しました Namespace/Modulename/Model/Observer.php
public function salesQuoteItemSetCustomAttribute($observer){
$quoteItem = $observer->getQuoteItem();
$product = $observer->getProduct();
$quoteItem->setCustomerProductPoints($product->getCustomerProductPoints());
}
この関数を 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>
また、持っているが、私のカスタム属性の変換順序に見積もりをからと順番引用するには、次のコードを使用することにより、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>
Magento 2の場合
Magento 2で同じことを試しましたが、製品の詳細を取得できませんでした。
私は次のコードで試しました:
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>
上記のコードを使用して、カート内の属性の値を取得していますが、カスタム属性値を取得していません。商品データを印刷しようとすると、nullが返されます。
コードはMagento 1.9で正常に動作します。Magento 2.0.2で使用するにはどうすればよいですか?
custom attribute
Magento 2でカートページを設定および表示する方法