Skip to content

Commit e9b656a

Browse files
author
Valeriy Nayda
committed
MAGETWO-44222: Multi-store: Bulk update assign to website does not create appropriate URL rewrite
1 parent d857d56 commit e9b656a

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\CatalogUrlRewrite\Observer;
7+
8+
use Magento\Catalog\Api\ProductRepositoryInterface;
9+
use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
10+
use Magento\Framework\App\RequestInterface;
11+
use Magento\Framework\Event\ObserverInterface;
12+
use Magento\Store\Model\Store;
13+
use Magento\UrlRewrite\Model\UrlPersistInterface;
14+
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
15+
16+
class ProductToWebsiteChangeObserver implements ObserverInterface
17+
{
18+
/**
19+
* @var ProductUrlRewriteGenerator
20+
*/
21+
protected $productUrlRewriteGenerator;
22+
23+
/**
24+
* @var UrlPersistInterface
25+
*/
26+
protected $urlPersist;
27+
28+
/**
29+
* @var ProductRepositoryInterface
30+
*/
31+
protected $productRepository;
32+
33+
/**
34+
* @var RequestInterface
35+
*/
36+
protected $request;
37+
38+
/**
39+
* @param ProductUrlRewriteGenerator $productUrlRewriteGenerator
40+
* @param UrlPersistInterface $urlPersist
41+
* @param ProductRepositoryInterface $productRepository
42+
* @param RequestInterface $request
43+
*/
44+
public function __construct(
45+
ProductUrlRewriteGenerator $productUrlRewriteGenerator,
46+
UrlPersistInterface $urlPersist,
47+
ProductRepositoryInterface $productRepository,
48+
RequestInterface $request
49+
) {
50+
$this->productUrlRewriteGenerator = $productUrlRewriteGenerator;
51+
$this->urlPersist = $urlPersist;
52+
$this->productRepository = $productRepository;
53+
$this->request = $request;
54+
}
55+
56+
/**
57+
* Generate urls for UrlRewrite and save it in storage
58+
*
59+
* @param \Magento\Framework\Event\Observer $observer
60+
* @return void
61+
*/
62+
public function execute(\Magento\Framework\Event\Observer $observer)
63+
{
64+
foreach ($observer->getEvent()->getProducts() as $productId) {
65+
$product = $this->productRepository->getById(
66+
$productId,
67+
false,
68+
$this->request->getParam('store_id', Store::DEFAULT_STORE_ID)
69+
);
70+
71+
$this->urlPersist->deleteByData([
72+
UrlRewrite::ENTITY_ID => $product->getId(),
73+
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
74+
]);
75+
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
76+
}
77+
}
78+
}

app/code/Magento/CatalogUrlRewrite/etc/adminhtml/events.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,7 @@
2727
<event name="catalog_category_move_after">
2828
<observer name="process_url_rewrite_moving" instance="Magento\CatalogUrlRewrite\Observer\CategoryProcessUrlRewriteMovingObserver"/>
2929
</event>
30+
<event name="catalog_product_to_website_change">
31+
<observer name="catalog_product_to_website_change" instance="Magento\CatalogUrlRewrite\Observer\ProductToWebsiteChangeObserver"/>
32+
</event>
3033
</config>

0 commit comments

Comments
 (0)