/** * Generate urls for UrlRewrite and save it in storage * * @param \Magento\Framework\Event\Observer $observer * @return void */ public function processUrlRewriteSaving(EventObserver $observer) { /** @var \Magento\Catalog\Model\Product $product */ $product = $observer->getEvent()->getProduct(); if (!$product->getUrlPath() || $product->getOrigData('url_key') != $product->getData('url_key')) { $product->setUrlPath($this->catalogUrlRewriteHelper->generateProductUrlKeyPath($product)); } if (!$product->getData('url_key') || $product->getOrigData('url_key') != $product->getData('url_key')) { $this->urlSave->save($this->productUrlGenerator->generate($product)); } }
/** * Generate urls for UrlRewrite and save it in storage * * @param \Magento\Framework\Event\Observer $observer * @return void */ public function processUrlRewriteSaving(EventObserver $observer) { /** @var \Magento\Catalog\Model\Category $category */ $category = $observer->getEvent()->getCategory(); if (!$this->catalogUrlRewriteHelper->isRootCategory($category) && (!$category->getData('url_key') || $category->getOrigData('url_key') != $category->getData('url_key'))) { $this->urlSave->save($this->categoryUrlGenerator->generate($category)); $products = $category->getProductCollection()->addAttributeToSelect('url_key')->addAttributeToSelect('url_path'); foreach ($products as $product) { $product->setData('save_rewrites_history', $category->getData('save_rewrites_history')); $this->urlSave->save($this->productUrlGenerator->generateWithChangedCategories($product, [$category->getId() => $category])); } } }
/** * Generate urls for UrlRewrite and save it in storage * * @param \Magento\Framework\Event\Observer $observer * @return void * @throws Exception|\Exception */ public function processUrlRewriteSaving(EventObserver $observer) { /** @var $cmsPage \Magento\Cms\Model\Page */ $cmsPage = $observer->getEvent()->getObject(); if ($cmsPage->getOrigData('identifier') !== $cmsPage->getData('identifier')) { $urls = $this->urlGenerator->generate($cmsPage); try { $this->urlSave->save($urls); } catch (\Exception $e) { if ($e->getCode() === 23000) { // Integrity constraint violation: 1062 Duplicate entry throw new Exception(__('A page URL key for specified store already exists.')); } throw $e; } } }