/** * Validate product data * * @param Product\Validator $subject * @param Closure $proceed * @param Product $product * @param RequestInterface $request * @param \Magento\Framework\DataObject $response * @return bool * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function aroundValidate(\Magento\Catalog\Model\Product\Validator $subject, Closure $proceed, \Magento\Catalog\Model\Product $product, \Magento\Framework\App\RequestInterface $request, \Magento\Framework\DataObject $response) { if ($request->has('attributes')) { $product->setTypeId(\Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE); } $result = $proceed($product, $request, $response); $variationProducts = (array) $request->getPost('variations-matrix'); if ($variationProducts) { $validationResult = $this->_validateProductVariations($product, $variationProducts, $request); if (!empty($validationResult)) { $response->setError(true)->setMessage(__('Some product variations fields are not valid.'))->setAttributes($validationResult); } } return $result; }