In Magento 1.x.
Ich habe folgende Funktion in erstellt Namespace/Modulename/Model/Observer.php
public function salesQuoteItemSetCustomAttribute($observer){
$quoteItem = $observer->getQuoteItem();
$product = $observer->getProduct();
$quoteItem->setCustomerProductPoints($product->getCustomerProductPoints());
}
Rief diese Funktion 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>
Habe auch mein benutzerdefiniertes Attributangebot in Bestellung und von Bestellung in Angebot konvertiert , indem ich den folgenden Code in verwendet habeconfig.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
Ich habe versucht, dasselbe in Magento 2 zu tun, konnte jedoch keine Produktdetails abrufen.
Ich habe es mit folgendem Code versucht:
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>
Mit dem obigen Code erhalte ich Werte von Attributen im Warenkorb, aber nicht meinen benutzerdefinierten Attributwert. Wenn ich versuche, Produktdaten zu drucken, wird null zurückgegeben.
Der Code funktioniert gut mit Magento 1.9. Wie mache ich es mit Magento 2.0.2?
Wie kann custom attribute
ich die Warenkorbseite in Magento 2 einstellen und anzeigen?
quelle
In Magento 2
Ändern Sie den folgenden Code:
Namespace/Modulename/Observer/salesQuoteItemSetCustomAttribute.php
etc/events.xml
Erstellen Sie
catalog_attributes.xml
inetc
, um das Attribut in Folgendes zu konvertierenquote
:Dadurch wird Ihr Attribut auf der Warenkorbseite angezeigt
quelle
$quoteItem->setData('categoryData', $categoryData);
- in der Beobachtermethodeexecute()
. Dafür müssen Sie nichts hinzufügencatalog_attributes.xml