public function testFormatUrlKey() { $strIn = 'Some string'; $resultString = 'some'; $this->filter->expects($this->once())->method('translitUrl')->with($strIn)->will($this->returnValue($resultString)); $this->assertEquals($resultString, $this->model->formatUrlKey($strIn)); }
public function testFormatUrlKey() { $this->assertEquals('abc-test', $this->_model->formatUrlKey('AbC#-$^test')); }
/** * @param array $rowData * @return string */ protected function getUrlKey($rowData) { if (!empty($rowData[self::URL_KEY])) { $this->productUrlKeys[$rowData[self::COL_SKU]] = $rowData[self::URL_KEY]; } $urlKey = !empty($this->productUrlKeys[$rowData[self::COL_SKU]]) ? $this->productUrlKeys[$rowData[self::COL_SKU]] : $this->productUrl->formatUrlKey($rowData[self::COL_NAME]); return $urlKey; }
/** * Generate either id path, request path or target path for product and/or category * * For generating id or system path, either product or category is required * For generating request path - category is required * $parentPath used only for generating category path * * @param string $type * @param \Magento\Framework\Object $product * @param \Magento\Framework\Object $category * @param string $parentPath * @return string * @throws \Magento\Framework\Model\Exception */ public function generatePath($type = 'target', $product = null, $category = null, $parentPath = null) { if (!$product && !$category) { throw new \Magento\Framework\Model\Exception(__('Please specify either a category or a product, or both.')); } // generate id_path if ('id' === $type) { if (!$product) { return 'category/' . $category->getId(); } if ($category && $category->getLevel() > 1) { return 'product/' . $product->getId() . '/' . $category->getId(); } return 'product/' . $product->getId(); } // generate request_path if ('request' === $type) { // for category if (!$product) { if ($category->getUrlKey() == '') { $urlKey = $this->getCategoryModel()->formatUrlKey($category->getName()); } else { $urlKey = $this->getCategoryModel()->formatUrlKey($category->getUrlKey()); } $categoryUrlSuffix = $this->getCategoryUrlSuffix($category->getStoreId()); if (null === $parentPath) { $parentPath = $this->getResource()->getCategoryParentPath($category); } elseif ($parentPath == '/') { $parentPath = ''; } $parentPath = $this->_catalogCategory->getCategoryUrlPath($parentPath, true, $category->getStoreId()); return $this->getUnusedPath($category->getStoreId(), $parentPath . $urlKey . $categoryUrlSuffix, $this->generatePath('id', null, $category), $urlKey); } // for product & category if (!$category) { throw new \Magento\Framework\Model\Exception(__('A category object is required for determining the product request path.')); } if ($product->getUrlKey() == '') { $urlKey = $this->productUrl->formatUrlKey($product->getName()); } else { $urlKey = $this->productUrl->formatUrlKey($product->getUrlKey()); } $productUrlSuffix = $this->getProductUrlSuffix($category->getStoreId()); if ($category->getLevel() > 1) { // To ensure, that category has url path either from attribute or generated now $this->_addCategoryUrlPath($category); $categoryUrl = $this->_catalogCategory->getCategoryUrlPath($category->getUrlPath(), false, $category->getStoreId()); return $this->getUnusedPath($category->getStoreId(), $categoryUrl . '/' . $urlKey . $productUrlSuffix, $this->generatePath('id', $product, $category), $urlKey); } // for product only return $this->getUnusedPath($category->getStoreId(), $urlKey . $productUrlSuffix, $this->generatePath('id', $product), $urlKey); } // generate target_path if (!$product) { return 'catalog/category/view/id/' . $category->getId(); } if ($category && $category->getLevel() > 1) { return 'catalog/product/view/id/' . $product->getId() . '/category/' . $category->getId(); } return 'catalog/product/view/id/' . $product->getId(); }