我试图将产品保存在事件catalog_product_save_before
的观察者中,但不知何故管理面板只是加载,它没有保存产品。
/**
* Execute observer
*
* @param MagentoFrameworkEventObserver $observer
* @return void
*/
public function execute(
MagentoFrameworkEventObserver $observer
) {
$_product = $observer->getProduct(); // you will get product object
$_sku = $_product->getSku(); // for sku
$_product->setSku("testNew1");
$_product->save();
}
这种方法将导致循环。因为catalog_product_save_before在每个产品保存之前被调度。在这个观察器中,你执行$_product->save();
,它将再次调度这个事件,并进入这个观察器,再次调用save()
方法,等等。
当你在观察器中得到$product
之前,它应该只是工作来调整产品对象,然后它将被保存。
所以删除行$_product->save();
,它应该工作良好。