magento 2 catalog_product_save_before 无法保存产品但一直在加载

magento 2 catalog_product_save_before unable to save product but keeps loading

我正在尝试将产品保存在事件 catalog_product_save_before 的观察者中,但不知何故管理面板只是在加载,并没有保存产品。

任何人都可以为此提出解决方案吗?

    /**
     * Execute observer
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return void
     */
    public function execute(
        \Magento\Framework\Event\Observer $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(); 它应该可以正常工作。