ติดตามเหตุการณ์บันทึกผลิตภัณฑ์ฉันพยายามเข้าถึงผลิตภัณฑ์ภายใน magento 2
ฉันได้กำหนดค่าฟังใน:
controller_action_catalog_product_save_entity_after
xml มีลักษณะดังนี้:
<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>
คลาสผู้สังเกตการณ์จะถูกเรียกใช้เมื่อมีการบันทึกผลิตภัณฑ์ แต่ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับวิธีการเข้าถึงผลิตภัณฑ์ที่ถูกบันทึกไว้ คลาสผู้สังเกตการณ์มีดังนี้:
<?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()));
}
}
ภายใน/module-catalog/Controller/Adminhtml/Product/Save.phpเหตุการณ์จะเริ่มทำงานที่บรรทัดที่ 114:
$this->_eventManager->dispatch(
'controller_action_catalog_product_save_entity_after',
['controller' => $this]
);
สิ่งนี้ผ่านตัวควบคุมเป็นอาร์กิวเมนต์ อย่างไรก็ตามฉันไม่แน่ใจว่าจะใช้สิ่งนี้เพื่อเข้าถึงผลิตภัณฑ์ได้อย่างไร
ฉันต้องการรับผลิตภัณฑ์ sku