Après un événement de sauvegarde de produit, j'essaie d'accéder au produit dans magento 2.
J'ai configuré l'écouteur sur:
controller_action_catalog_product_save_entity_after
le xml ressemble à ceci:
<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>
La classe des observateurs est ensuite appelée lorsqu'un produit est enregistré, mais je ne trouve aucune information sur la façon d'accéder au produit qui a été enregistré. La classe d'observateur est la suivante:
<?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()));
}
}
Dans /module-catalog/Controller/Adminhtml/Product/Save.php, l'événement est déclenché sur la ligne 114:
$this->_eventManager->dispatch(
'controller_action_catalog_product_save_entity_after',
['controller' => $this]
);
Cela passe le contrôleur comme argument. Cependant, je ne sais pas comment l'utiliser pour accéder au produit.
J'aimerais obtenir les produits sku
C'est assez vieux et je ne sais pas si quelqu'un s'en soucie maintenant mais je le cherchais donc:
Je ne suis pas sûr depuis quand mais définitivement sur M2.2.x cet événement est comme ça maintenant:
ce qui signifie qu'il vous donne maintenant le produit aussi.
Pour votre cas, vous auriez dû le faire et vous pourriez obtenir les attributs du produit sous forme de tableau:
la source