Skip to content

Commit f4c4955

Browse files
author
mastiuhin-olexandr
committed
MC-40031: [UX] Configurations are not preserved on form reload when new configurable product creation fails
1 parent e50d9a4 commit f4c4955

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

app/code/Magento/Catalog/Controller/Adminhtml/Product/Validate.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Store\Model\StoreManagerInterface;
1515
use Magento\UrlRewrite\Model\Exception\UrlAlreadyExistsException;
1616
use Magento\CatalogUrlRewrite\Model\Product\Validator as ProductUrlRewriteValidator;
17+
use Magento\CatalogUrlRewrite\Model\ProductUrlPathGenerator;
1718

1819
/**
1920
* Product validate
@@ -59,6 +60,11 @@ class Validate extends Product implements HttpPostActionInterface, HttpGetAction
5960
*/
6061
private $storeManager;
6162

63+
/**
64+
* @var ProductUrlPathGenerator
65+
*/
66+
private $productUrlPathGenerator;
67+
6268
/**
6369
* @var ProductUrlRewriteValidator
6470
*/
@@ -73,6 +79,7 @@ class Validate extends Product implements HttpPostActionInterface, HttpGetAction
7379
* @param \Magento\Framework\View\LayoutFactory $layoutFactory
7480
* @param \Magento\Catalog\Model\ProductFactory $productFactory
7581
* @param ProductUrlRewriteValidator $productUrlRewriteValidator
82+
* @param ProductUrlPathGenerator $productUrlPathGenerator
7683
*/
7784
public function __construct(
7885
\Magento\Backend\App\Action\Context $context,
@@ -82,7 +89,8 @@ public function __construct(
8289
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
8390
\Magento\Framework\View\LayoutFactory $layoutFactory,
8491
\Magento\Catalog\Model\ProductFactory $productFactory,
85-
ProductUrlRewriteValidator $productUrlRewriteValidator
92+
ProductUrlRewriteValidator $productUrlRewriteValidator,
93+
ProductUrlPathGenerator $productUrlPathGenerator
8694
) {
8795
$this->_dateFilter = $dateFilter;
8896
$this->productValidator = $productValidator;
@@ -91,6 +99,7 @@ public function __construct(
9199
$this->layoutFactory = $layoutFactory;
92100
$this->productFactory = $productFactory;
93101
$this->productUrlRewriteValidator = $productUrlRewriteValidator;
102+
$this->productUrlPathGenerator = $productUrlPathGenerator;
94103
}
95104

96105
/**
@@ -140,7 +149,11 @@ public function execute()
140149
$resource->getAttribute('news_from_date')->setMaxValue($product->getNewsToDate());
141150
$resource->getAttribute('custom_design_from')->setMaxValue($product->getCustomDesignTo());
142151

143-
$this->productUrlRewriteValidator->validateUrlKey($product);
152+
if (!$product->getUrlKey()) {
153+
$urlKey = $this->productUrlPathGenerator->getUrlKey($product);
154+
$product->setUrlKey($urlKey);
155+
}
156+
$this->productUrlRewriteValidator->validateUrlKeyConflicts($product);
144157
$this->productValidator->validate($product, $this->getRequest(), $response);
145158
} catch (\Magento\Eav\Model\Entity\Attribute\Exception $e) {
146159
$response->setError(true);

app/code/Magento/CatalogUrlRewrite/Model/Product/Validator.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,13 @@ public function __construct(
5151
}
5252

5353
/**
54-
* Validate Url Key of a Product.
54+
* Validate Url Key of a Product has no conflicts.
5555
*
5656
* @param Product $product
5757
* @throws UrlAlreadyExistsException
5858
*/
59-
public function validateUrlKey(Product $product): void
59+
public function validateUrlKeyConflicts(Product $product): void
6060
{
61-
if (!$product->getUrlKey()) {
62-
$urlKey = $this->productUrlPathGenerator->getUrlKey($product);
63-
$product->setUrlKey($urlKey);
64-
}
65-
6661
$stores = $this->storeManager->getStores();
6762

6863
$storeIdsToPathForSave = [];

0 commit comments

Comments
 (0)