getEvent()->getData('controller'); $data = $controller->getRequest()->getParam('product'); /* @var $product \Magento\Catalog\Model\Product */ $product = $observer->getEvent()->getData('product'); $hasDiff = false; foreach ($product->getAttributes() as $attribute) { if ($attribute->getFrontendInput() === 'multiselect' && isset($data[$attribute->getAttributeCode()])) { $requestData = is_string($data[$attribute->getAttributeCode()])? $data[$attribute->getAttributeCode()]:implode(',', $data[$attribute->getAttributeCode()]); if (!empty($requestData)) { $product->setData($attribute->getAttributeCode(), $requestData); $hasDiff = true; } } } if ($hasDiff) { $product->save(); } } }