Nach einem Produktspeicherereignis versuche ich, in Magento 2 auf das Produkt zuzugreifen.
Ich habe den Listener konfiguriert für:
controller_action_catalog_product_save_entity_after
Die XML sieht wie folgt aus:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="controller_action_catalog_product_save_entity_after">
<observer name="wire_products_update" instance="TBS\WireProductsHook\Observer\WireProductsUpdate" />
</event>
</config>
Die Beobachterklasse wird dann aufgerufen, wenn ein Produkt gespeichert wird, aber ich kann keine Informationen darüber finden, wie auf das gespeicherte Produkt zugegriffen werden kann. Die Beobachterklasse ist wie folgt:
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace TBS\WireProductsHook\Observer;
use Magento\Framework\Event\ObserverInterface;
class WireProductsUpdate implements ObserverInterface {
public function execute( \Magento\Framework\Event\Observer $observer ) {
// echos name of event: controller_action_catalog_product_save_entity_after
echo 'name of event: ' . $observer->getEvent()->getName();
// tried using the same method as the save class: <magento>/module-catalog/Controller/Adminhtml/Product/Save.php on line 76
$controller = $observer->getData('controller');
// Fails: Fatal error: Cannot access protected property ...
$product = $controller->initializationHelper->initialize($controller->productBuilder->build($controller->getRequest()));
}
}
In /module-catalog/Controller/Adminhtml/Product/Save.php wird das Ereignis in Zeile 114 ausgelöst:
$this->_eventManager->dispatch(
'controller_action_catalog_product_save_entity_after',
['controller' => $this]
);
Dies übergibt den Controller als Argument. Ich bin mir jedoch nicht sicher, wie ich damit auf das Produkt zugreifen soll.
Ich möchte die Produkte sku bekommen
Das ist ziemlich alt und ich bin mir nicht sicher, ob es jetzt jemanden interessiert, aber ich habe danach gesucht:
Ich bin mir nicht sicher seit wann, aber definitiv auf M2.2.x ist dieses Ereignis jetzt so:
Das heißt, es gibt Ihnen jetzt auch das Produkt.
Für Ihren Fall hätten Sie dies tun sollen und Sie könnten die Produktattribute als Array erhalten:
quelle