Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ChildrenUrlRewriteGenerator.php
Go to the documentation of this file.
1 <?php
7 
9 use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory;
11 use Magento\UrlRewrite\Model\MergeDataProviderFactory;
13 
15 {
20 
25 
29  private $mergeDataProviderPrototype;
30 
36  public function __construct(
38  CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory,
39  MergeDataProviderFactory $mergeDataProviderFactory = null
40  ) {
41  $this->childrenCategoriesProvider = $childrenCategoriesProvider;
42  $this->categoryUrlRewriteGeneratorFactory = $categoryUrlRewriteGeneratorFactory;
43  if (!isset($mergeDataProviderFactory)) {
44  $mergeDataProviderFactory = ObjectManager::getInstance()->get(MergeDataProviderFactory::class);
45  }
46  $this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
47  }
48 
57  public function generate($storeId, Category $category, $rootCategoryId = null)
58  {
59  $mergeDataProvider = clone $this->mergeDataProviderPrototype;
60  foreach ($this->childrenCategoriesProvider->getChildren($category, true) as $childCategory) {
61  $childCategory->setStoreId($storeId);
62  $childCategory->setData('save_rewrites_history', $category->getData('save_rewrites_history'));
64  $categoryUrlRewriteGenerator = $this->categoryUrlRewriteGeneratorFactory->create();
65  $mergeDataProvider->merge(
66  $categoryUrlRewriteGenerator->generate($childCategory, false, $rootCategoryId)
67  );
68  }
69 
70  return $mergeDataProvider->getData();
71  }
72 }
__construct(ChildrenCategoriesProvider $childrenCategoriesProvider, CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory, MergeDataProviderFactory $mergeDataProviderFactory=null)